content: /*
   * Copyright (c) 2015, 2022, Oracle and/or its affiliates.
   *
   * This program is free software; you can redistribute it and/or modify it under
   * the terms of the GNU General Public License, version 2.0, as published by the
   * Free Software Foundation.
   *
   * This program is also distributed with certain software (including but not
   * limited to OpenSSL) that is licensed under separate terms, as designated in a
   * particular file or component or in included license documentation. The
   * authors of MySQL hereby grant you an additional permission to link the
   * program and your derivative works with the separately licensed software that
   * they have included with MySQL.
   *
   * Without limiting anything contained in the foregoing, this file, which is
   * part of MySQL Connector/J, is also subject to the Universal FOSS Exception,
   * version 1.0, a copy of which can be found at
   * http://oss.oracle.com/licenses/universal-foss-exception.
   *
   * This program is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
   * FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0,
   * for more details.
   *
   * You should have received a copy of the GNU General Public License along with
   * this program; if not, write to the Free Software Foundation, Inc.,
   * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
   */
  
  package com.mysql.cj.x.protobuf;
  
  // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: mysqlx_crud.proto
  
  @SuppressWarnings({ "deprecation" })
  public final class MysqlxCrud {
    private MysqlxCrud() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    /**
     * <pre>
     **
     *DataModel to use for filters, names, ...
     * </pre>
     *
     * Protobuf enum {@code Mysqlx.Crud.DataModel}
     */
    public enum DataModel
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>DOCUMENT = 1;</code>
       */
      DOCUMENT(1),
      /**
       * <code>TABLE = 2;</code>
       */
      TABLE(2),
      ;
  
      /**
       * <code>DOCUMENT = 1;</code>
       */
      public static final int DOCUMENT_VALUE = 1;
      /**
       * <code>TABLE = 2;</code>
       */
      public static final int TABLE_VALUE = 2;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DataModel valueOf(int value) {
        return forNumber(value);
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static DataModel forNumber(int value) {
        switch (value) {
          case 1: return DOCUMENT;
          case 2: return TABLE;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<DataModel>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          DataModel> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<DataModel>() {
              public DataModel findValueByNumber(int number) {
                return DataModel.forNumber(number);
              }
            };
  
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.getDescriptor().getEnumTypes().get(0);
      }
  
      private static final DataModel[] VALUES = values();
  
      public static DataModel valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private DataModel(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.DataModel)
    }
  
    /**
     * <pre>
     **
     *ViewAlgorithm defines how MySQL Server processes the view
     * </pre>
     *
     * Protobuf enum {@code Mysqlx.Crud.ViewAlgorithm}
     */
    public enum ViewAlgorithm
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       ** MySQL chooses which algorithm to use 
       * </pre>
       *
       * <code>UNDEFINED = 1;</code>
       */
      UNDEFINED(1),
      /**
       * <pre>
       ** the text of a statement that refers to the view and the view
       *definition are merged 
       * </pre>
       *
       * <code>MERGE = 2;</code>
       */
      MERGE(2),
      /**
       * <pre>
       ** the view are retrieved into a temporary table 
       * </pre>
       *
       * <code>TEMPTABLE = 3;</code>
       */
      TEMPTABLE(3),
      ;
  
      /**
       * <pre>
       ** MySQL chooses which algorithm to use 
       * </pre>
       *
       * <code>UNDEFINED = 1;</code>
       */
      public static final int UNDEFINED_VALUE = 1;
      /**
       * <pre>
       ** the text of a statement that refers to the view and the view
       *definition are merged 
       * </pre>
       *
       * <code>MERGE = 2;</code>
       */
      public static final int MERGE_VALUE = 2;
      /**
       * <pre>
       ** the view are retrieved into a temporary table 
       * </pre>
       *
       * <code>TEMPTABLE = 3;</code>
       */
      public static final int TEMPTABLE_VALUE = 3;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ViewAlgorithm valueOf(int value) {
        return forNumber(value);
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ViewAlgorithm forNumber(int value) {
        switch (value) {
          case 1: return UNDEFINED;
          case 2: return MERGE;
          case 3: return TEMPTABLE;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<ViewAlgorithm>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ViewAlgorithm> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ViewAlgorithm>() {
              public ViewAlgorithm findValueByNumber(int number) {
                return ViewAlgorithm.forNumber(number);
              }
            };
  
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.getDescriptor().getEnumTypes().get(1);
      }
  
      private static final ViewAlgorithm[] VALUES = values();
  
      public static ViewAlgorithm valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ViewAlgorithm(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.ViewAlgorithm)
    }
  
    /**
     * <pre>
     **
     *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 user who defined the VIEW
     * </pre>
     *
     * Protobuf enum {@code Mysqlx.Crud.ViewSqlSecurity}
     */
    public enum ViewSqlSecurity
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       ** use current user permissions 
       * </pre>
       *
       * <code>INVOKER = 1;</code>
       */
      INVOKER(1),
      /**
       * <pre>
       ** use permissions of the user who defined the VIEW 
       * </pre>
       *
       * <code>DEFINER = 2;</code>
       */
      DEFINER(2),
      ;
  
      /**
       * <pre>
       ** use current user permissions 
       * </pre>
       *
       * <code>INVOKER = 1;</code>
       */
      public static final int INVOKER_VALUE = 1;
      /**
       * <pre>
       ** use permissions of the user who defined the VIEW 
       * </pre>
       *
       * <code>DEFINER = 2;</code>
       */
      public static final int DEFINER_VALUE = 2;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ViewSqlSecurity valueOf(int value) {
        return forNumber(value);
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ViewSqlSecurity forNumber(int value) {
        switch (value) {
          case 1: return INVOKER;
          case 2: return DEFINER;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<ViewSqlSecurity>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ViewSqlSecurity> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ViewSqlSecurity>() {
              public ViewSqlSecurity findValueByNumber(int number) {
                return ViewSqlSecurity.forNumber(number);
              }
            };
  
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.getDescriptor().getEnumTypes().get(2);
      }
  
      private static final ViewSqlSecurity[] VALUES = values();
  
      public static ViewSqlSecurity valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ViewSqlSecurity(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.ViewSqlSecurity)
    }
  
    /**
     * <pre>
     **
     *ViewCheckOption limits the write operations done on a `VIEW`
     *(`INSERT`, `UPDATE`, `DELETE`) to rows in which the `WHERE` clause is `TRUE`
     * </pre>
     *
     * Protobuf enum {@code Mysqlx.Crud.ViewCheckOption}
     */
    public enum ViewCheckOption
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       ** the view WHERE clause is checked, but no underlying views are checked 
       * </pre>
       *
       * <code>LOCAL = 1;</code>
       */
      LOCAL(1),
      /**
       * <pre>
       ** the view WHERE clause is checked, then checking recurses
       *to underlying views 
       * </pre>
       *
       * <code>CASCADED = 2;</code>
       */
      CASCADED(2),
      ;
  
      /**
       * <pre>
       ** the view WHERE clause is checked, but no underlying views are checked 
       * </pre>
       *
       * <code>LOCAL = 1;</code>
       */
      public static final int LOCAL_VALUE = 1;
      /**
       * <pre>
       ** the view WHERE clause is checked, then checking recurses
       *to underlying views 
       * </pre>
       *
       * <code>CASCADED = 2;</code>
       */
      public static final int CASCADED_VALUE = 2;
  
  
      public final int getNumber() {
        return value;
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ViewCheckOption valueOf(int value) {
        return forNumber(value);
      }
  
      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ViewCheckOption forNumber(int value) {
        switch (value) {
          case 1: return LOCAL;
          case 2: return CASCADED;
          default: return null;
        }
      }
  
      public static com.google.protobuf.Internal.EnumLiteMap<ViewCheckOption>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ViewCheckOption> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ViewCheckOption>() {
              public ViewCheckOption findValueByNumber(int number) {
                return ViewCheckOption.forNumber(number);
              }
            };
  
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.getDescriptor().getEnumTypes().get(3);
      }
  
      private static final ViewCheckOption[] VALUES = values();
  
      public static ViewCheckOption valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
  
      private final int value;
  
      private ViewCheckOption(int value) {
        this.value = value;
      }
  
      // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.ViewCheckOption)
    }
  
    public interface ColumnOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Column)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      boolean hasName();
      /**
       * <code>optional string name = 1;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>optional string name = 1;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();
  
      /**
       * <code>optional string alias = 2;</code>
       * @return Whether the alias field is set.
       */
      boolean hasAlias();
      /**
       * <code>optional string alias = 2;</code>
       * @return The alias.
       */
      java.lang.String getAlias();
      /**
       * <code>optional string alias = 2;</code>
       * @return The bytes for alias.
       */
      com.google.protobuf.ByteString
          getAliasBytes();
  
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> 
          getDocumentPathList();
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem getDocumentPath(int index);
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      int getDocumentPathCount();
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder> 
          getDocumentPathOrBuilderList();
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder getDocumentPathOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code Mysqlx.Crud.Column}
     */
    public static final class Column extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Column)
        ColumnOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Column.newBuilder() to construct.
      private Column(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Column() {
        name_ = "";
        alias_ = "";
        documentPath_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Column();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Column(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                name_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                alias_ = bs;
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  documentPath_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem>();
                  mutable_bitField0_ |= 0x00000004;
                }
                documentPath_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.PARSER, extensionRegistry));
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            documentPath_ = java.util.Collections.unmodifiableList(documentPath_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Column_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Column_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Column.class, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder.class);
      }
  
      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>optional string name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>optional string name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string name = 1;</code>
       * @return The bytes for name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int ALIAS_FIELD_NUMBER = 2;
      private volatile java.lang.Object alias_;
      /**
       * <code>optional string alias = 2;</code>
       * @return Whether the alias field is set.
       */
      @java.lang.Override
      public boolean hasAlias() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string alias = 2;</code>
       * @return The alias.
       */
      @java.lang.Override
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            alias_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string alias = 2;</code>
       * @return The bytes for alias.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int DOCUMENT_PATH_FIELD_NUMBER = 3;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> documentPath_;
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> getDocumentPathList() {
        return documentPath_;
      }
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder> 
          getDocumentPathOrBuilderList() {
        return documentPath_;
      }
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      @java.lang.Override
      public int getDocumentPathCount() {
        return documentPath_.size();
      }
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem getDocumentPath(int index) {
        return documentPath_.get(index);
      }
      /**
       * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder getDocumentPathOrBuilder(
          int index) {
        return documentPath_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        for (int i = 0; i < getDocumentPathCount(); i++) {
          if (!getDocumentPath(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alias_);
        }
        for (int i = 0; i < documentPath_.size(); i++) {
          output.writeMessage(3, documentPath_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alias_);
        }
        for (int i = 0; i < documentPath_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, documentPath_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Column)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Column other = (com.mysql.cj.x.protobuf.MysqlxCrud.Column) obj;
  
        if (hasName() != other.hasName()) return false;
        if (hasName()) {
          if (!getName()
              .equals(other.getName())) return false;
        }
        if (hasAlias() != other.hasAlias()) return false;
        if (hasAlias()) {
          if (!getAlias()
              .equals(other.getAlias())) return false;
        }
        if (!getDocumentPathList()
            .equals(other.getDocumentPathList())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasAlias()) {
          hash = (37 * hash) + ALIAS_FIELD_NUMBER;
          hash = (53 * hash) + getAlias().hashCode();
        }
        if (getDocumentPathCount() > 0) {
          hash = (37 * hash) + DOCUMENT_PATH_FIELD_NUMBER;
          hash = (53 * hash) + getDocumentPathList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Column prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Mysqlx.Crud.Column}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Column)
          com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Column_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Column_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Column.class, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Column.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getDocumentPathFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          alias_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          if (documentPathBuilder_ == null) {
            documentPath_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            documentPathBuilder_.clear();
          }
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Column_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Column.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Column result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Column result = new com.mysql.cj.x.protobuf.MysqlxCrud.Column(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.alias_ = alias_;
          if (documentPathBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              documentPath_ = java.util.Collections.unmodifiableList(documentPath_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.documentPath_ = documentPath_;
          } else {
            result.documentPath_ = documentPathBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Column) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Column)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Column other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Column.getDefaultInstance()) return this;
          if (other.hasName()) {
            bitField0_ |= 0x00000001;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasAlias()) {
            bitField0_ |= 0x00000002;
            alias_ = other.alias_;
            onChanged();
          }
          if (documentPathBuilder_ == null) {
            if (!other.documentPath_.isEmpty()) {
              if (documentPath_.isEmpty()) {
                documentPath_ = other.documentPath_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureDocumentPathIsMutable();
                documentPath_.addAll(other.documentPath_);
              }
              onChanged();
            }
          } else {
            if (!other.documentPath_.isEmpty()) {
              if (documentPathBuilder_.isEmpty()) {
                documentPathBuilder_.dispose();
                documentPathBuilder_ = null;
                documentPath_ = other.documentPath_;
                bitField0_ = (bitField0_ & ~0x00000004);
                documentPathBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getDocumentPathFieldBuilder() : null;
              } else {
                documentPathBuilder_.addAllMessages(other.documentPath_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          for (int i = 0; i < getDocumentPathCount(); i++) {
            if (!getDocumentPath(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Column parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Column) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object name_ = "";
        /**
         * <code>optional string name = 1;</code>
         * @return Whether the name field is set.
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>optional string name = 1;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string name = 1;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string name = 1;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 1;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object alias_ = "";
        /**
         * <code>optional string alias = 2;</code>
         * @return Whether the alias field is set.
         */
        public boolean hasAlias() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string alias = 2;</code>
         * @return The alias.
         */
        public java.lang.String getAlias() {
          java.lang.Object ref = alias_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              alias_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string alias = 2;</code>
         * @return The bytes for alias.
         */
        public com.google.protobuf.ByteString
            getAliasBytes() {
          java.lang.Object ref = alias_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            alias_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string alias = 2;</code>
         * @param value The alias to set.
         * @return This builder for chaining.
         */
        public Builder setAlias(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          alias_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string alias = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearAlias() {
          bitField0_ = (bitField0_ & ~0x00000002);
          alias_ = getDefaultInstance().getAlias();
          onChanged();
          return this;
        }
        /**
         * <code>optional string alias = 2;</code>
         * @param value The bytes for alias to set.
         * @return This builder for chaining.
         */
        public Builder setAliasBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          alias_ = value;
          onChanged();
          return this;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> documentPath_ =
          java.util.Collections.emptyList();
        private void ensureDocumentPathIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            documentPath_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem>(documentPath_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder> documentPathBuilder_;
  
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> getDocumentPathList() {
          if (documentPathBuilder_ == null) {
            return java.util.Collections.unmodifiableList(documentPath_);
          } else {
            return documentPathBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public int getDocumentPathCount() {
          if (documentPathBuilder_ == null) {
            return documentPath_.size();
          } else {
            return documentPathBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem getDocumentPath(int index) {
          if (documentPathBuilder_ == null) {
            return documentPath_.get(index);
          } else {
            return documentPathBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder setDocumentPath(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem value) {
          if (documentPathBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentPathIsMutable();
            documentPath_.set(index, value);
            onChanged();
          } else {
            documentPathBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder setDocumentPath(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder builderForValue) {
          if (documentPathBuilder_ == null) {
            ensureDocumentPathIsMutable();
            documentPath_.set(index, builderForValue.build());
            onChanged();
          } else {
            documentPathBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder addDocumentPath(com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem value) {
          if (documentPathBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentPathIsMutable();
            documentPath_.add(value);
            onChanged();
          } else {
            documentPathBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder addDocumentPath(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem value) {
          if (documentPathBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureDocumentPathIsMutable();
            documentPath_.add(index, value);
            onChanged();
          } else {
            documentPathBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder addDocumentPath(
            com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder builderForValue) {
          if (documentPathBuilder_ == null) {
            ensureDocumentPathIsMutable();
            documentPath_.add(builderForValue.build());
            onChanged();
          } else {
            documentPathBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder addDocumentPath(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder builderForValue) {
          if (documentPathBuilder_ == null) {
            ensureDocumentPathIsMutable();
            documentPath_.add(index, builderForValue.build());
            onChanged();
          } else {
            documentPathBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder addAllDocumentPath(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem> values) {
          if (documentPathBuilder_ == null) {
            ensureDocumentPathIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, documentPath_);
            onChanged();
          } else {
            documentPathBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder clearDocumentPath() {
          if (documentPathBuilder_ == null) {
            documentPath_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            documentPathBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public Builder removeDocumentPath(int index) {
          if (documentPathBuilder_ == null) {
            ensureDocumentPathIsMutable();
            documentPath_.remove(index);
            onChanged();
          } else {
            documentPathBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder getDocumentPathBuilder(
            int index) {
          return getDocumentPathFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder getDocumentPathOrBuilder(
            int index) {
          if (documentPathBuilder_ == null) {
            return documentPath_.get(index);  } else {
            return documentPathBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder> 
             getDocumentPathOrBuilderList() {
          if (documentPathBuilder_ != null) {
            return documentPathBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(documentPath_);
          }
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder addDocumentPathBuilder() {
          return getDocumentPathFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.getDefaultInstance());
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder addDocumentPathBuilder(
            int index) {
          return getDocumentPathFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.getDefaultInstance());
        }
        /**
         * <code>repeated .Mysqlx.Expr.DocumentPathItem document_path = 3;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder> 
             getDocumentPathBuilderList() {
          return getDocumentPathFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder> 
            getDocumentPathFieldBuilder() {
          if (documentPathBuilder_ == null) {
            documentPathBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItem.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.DocumentPathItemOrBuilder>(
                    documentPath_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            documentPath_ = null;
          }
          return documentPathBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Column)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Column)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Column DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Column();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Column getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Column>
          PARSER = new com.google.protobuf.AbstractParser<Column>() {
        @java.lang.Override
        public Column parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Column(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Column> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Column> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Column getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ProjectionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Projection)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       * @return Whether the source field is set.
       */
      boolean hasSource();
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       * @return The source.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getSource();
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getSourceOrBuilder();
  
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return Whether the alias field is set.
       */
      boolean hasAlias();
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return The alias.
       */
      java.lang.String getAlias();
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return The bytes for alias.
       */
      com.google.protobuf.ByteString
          getAliasBytes();
    }
    /**
     * Protobuf type {@code Mysqlx.Crud.Projection}
     */
    public static final class Projection extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Projection)
        ProjectionOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Projection.newBuilder() to construct.
      private Projection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Projection() {
        alias_ = "";
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Projection();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Projection(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = source_.toBuilder();
                }
                source_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(source_);
                  source_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                alias_ = bs;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Projection_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Projection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Projection.class, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder.class);
      }
  
      private int bitField0_;
      public static final int SOURCE_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr source_;
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       * @return Whether the source field is set.
       */
      @java.lang.Override
      public boolean hasSource() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       * @return The source.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getSource() {
        return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : source_;
      }
      /**
       * <pre>
       ** the expression identifying an element from the source data,
       *which can include a column identifier or any expression 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr source = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getSourceOrBuilder() {
        return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : source_;
      }
  
      public static final int ALIAS_FIELD_NUMBER = 2;
      private volatile java.lang.Object alias_;
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return Whether the alias field is set.
       */
      @java.lang.Override
      public boolean hasAlias() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return The alias.
       */
      @java.lang.Override
      public java.lang.String getAlias() {
        java.lang.Object ref = alias_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            alias_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       ** optional alias. Required for DOCUMENTs (clients may use
       *the source string as default) 
       * </pre>
       *
       * <code>optional string alias = 2;</code>
       * @return The bytes for alias.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getAliasBytes() {
        java.lang.Object ref = alias_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          alias_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasSource()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getSource().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getSource());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, alias_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getSource());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, alias_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Projection)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Projection other = (com.mysql.cj.x.protobuf.MysqlxCrud.Projection) obj;
  
        if (hasSource() != other.hasSource()) return false;
        if (hasSource()) {
          if (!getSource()
              .equals(other.getSource())) return false;
        }
        if (hasAlias() != other.hasAlias()) return false;
        if (hasAlias()) {
          if (!getAlias()
              .equals(other.getAlias())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSource()) {
          hash = (37 * hash) + SOURCE_FIELD_NUMBER;
          hash = (53 * hash) + getSource().hashCode();
        }
        if (hasAlias()) {
          hash = (37 * hash) + ALIAS_FIELD_NUMBER;
          hash = (53 * hash) + getAlias().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Projection prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Mysqlx.Crud.Projection}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Projection)
          com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Projection_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Projection_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Projection.class, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Projection.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getSourceFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (sourceBuilder_ == null) {
            source_ = null;
          } else {
            sourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          alias_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Projection_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Projection.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Projection result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Projection result = new com.mysql.cj.x.protobuf.MysqlxCrud.Projection(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (sourceBuilder_ == null) {
              result.source_ = source_;
            } else {
              result.source_ = sourceBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.alias_ = alias_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Projection) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Projection)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Projection other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Projection.getDefaultInstance()) return this;
          if (other.hasSource()) {
            mergeSource(other.getSource());
          }
          if (other.hasAlias()) {
            bitField0_ |= 0x00000002;
            alias_ = other.alias_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasSource()) {
            return false;
          }
          if (!getSource().isInitialized()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Projection parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Projection) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr source_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> sourceBuilder_;
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         * @return Whether the source field is set.
         */
        public boolean hasSource() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         * @return The source.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getSource() {
          if (sourceBuilder_ == null) {
            return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : source_;
          } else {
            return sourceBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public Builder setSource(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (sourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            source_ = value;
            onChanged();
          } else {
            sourceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public Builder setSource(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (sourceBuilder_ == null) {
            source_ = builderForValue.build();
            onChanged();
          } else {
            sourceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public Builder mergeSource(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (sourceBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                source_ != null &&
                source_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              source_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(source_).mergeFrom(value).buildPartial();
            } else {
              source_ = value;
            }
            onChanged();
          } else {
            sourceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public Builder clearSource() {
          if (sourceBuilder_ == null) {
            source_ = null;
            onChanged();
          } else {
            sourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getSourceBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getSourceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getSourceOrBuilder() {
          if (sourceBuilder_ != null) {
            return sourceBuilder_.getMessageOrBuilder();
          } else {
            return source_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : source_;
          }
        }
        /**
         * <pre>
         ** the expression identifying an element from the source data,
         *which can include a column identifier or any expression 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr source = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getSourceFieldBuilder() {
          if (sourceBuilder_ == null) {
            sourceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getSource(),
                    getParentForChildren(),
                    isClean());
            source_ = null;
          }
          return sourceBuilder_;
        }
  
        private java.lang.Object alias_ = "";
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @return Whether the alias field is set.
         */
        public boolean hasAlias() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @return The alias.
         */
        public java.lang.String getAlias() {
          java.lang.Object ref = alias_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              alias_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @return The bytes for alias.
         */
        public com.google.protobuf.ByteString
            getAliasBytes() {
          java.lang.Object ref = alias_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            alias_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @param value The alias to set.
         * @return This builder for chaining.
         */
        public Builder setAlias(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          alias_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearAlias() {
          bitField0_ = (bitField0_ & ~0x00000002);
          alias_ = getDefaultInstance().getAlias();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** optional alias. Required for DOCUMENTs (clients may use
         *the source string as default) 
         * </pre>
         *
         * <code>optional string alias = 2;</code>
         * @param value The bytes for alias to set.
         * @return This builder for chaining.
         */
        public Builder setAliasBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          alias_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Projection)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Projection)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Projection DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Projection();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Projection getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Projection>
          PARSER = new com.google.protobuf.AbstractParser<Projection>() {
        @java.lang.Override
        public Projection parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Projection(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Projection> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Projection> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Projection getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CollectionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Collection)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      boolean hasName();
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      java.lang.String getName();
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();
  
      /**
       * <code>optional string schema = 2;</code>
       * @return Whether the schema field is set.
       */
      boolean hasSchema();
      /**
       * <code>optional string schema = 2;</code>
       * @return The schema.
       */
      java.lang.String getSchema();
      /**
       * <code>optional string schema = 2;</code>
       * @return The bytes for schema.
       */
      com.google.protobuf.ByteString
          getSchemaBytes();
    }
    /**
     * Protobuf type {@code Mysqlx.Crud.Collection}
     */
    public static final class Collection extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Collection)
        CollectionOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Collection.newBuilder() to construct.
      private Collection(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Collection() {
        name_ = "";
        schema_ = "";
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Collection();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Collection(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                name_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                schema_ = bs;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Collection_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Collection_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.class, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder.class);
      }
  
      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object name_;
      /**
       * <code>required string name = 1;</code>
       * @return Whether the name field is set.
       */
      @java.lang.Override
      public boolean hasName() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required string name = 1;</code>
       * @return The name.
       */
      @java.lang.Override
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string name = 1;</code>
       * @return The bytes for name.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int SCHEMA_FIELD_NUMBER = 2;
      private volatile java.lang.Object schema_;
      /**
       * <code>optional string schema = 2;</code>
       * @return Whether the schema field is set.
       */
      @java.lang.Override
      public boolean hasSchema() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional string schema = 2;</code>
       * @return The schema.
       */
      @java.lang.Override
      public java.lang.String getSchema() {
        java.lang.Object ref = schema_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            schema_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string schema = 2;</code>
       * @return The bytes for schema.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSchemaBytes() {
        java.lang.Object ref = schema_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          schema_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasName()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, schema_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, schema_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Collection)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Collection other = (com.mysql.cj.x.protobuf.MysqlxCrud.Collection) obj;
  
        if (hasName() != other.hasName()) return false;
        if (hasName()) {
          if (!getName()
              .equals(other.getName())) return false;
        }
        if (hasSchema() != other.hasSchema()) return false;
        if (hasSchema()) {
          if (!getSchema()
              .equals(other.getSchema())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasSchema()) {
          hash = (37 * hash) + SCHEMA_FIELD_NUMBER;
          hash = (53 * hash) + getSchema().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Collection prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Mysqlx.Crud.Collection}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Collection)
          com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Collection_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Collection_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Collection.class, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          schema_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Collection_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Collection result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Collection result = new com.mysql.cj.x.protobuf.MysqlxCrud.Collection(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            to_bitField0_ |= 0x00000001;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.schema_ = schema_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Collection) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Collection)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Collection other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) return this;
          if (other.hasName()) {
            bitField0_ |= 0x00000001;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasSchema()) {
            bitField0_ |= 0x00000002;
            schema_ = other.schema_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasName()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Collection parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Collection) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object name_ = "";
        /**
         * <code>required string name = 1;</code>
         * @return Whether the name field is set.
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required string name = 1;</code>
         * @return The name.
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @return The bytes for name.
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000001);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>required string name = 1;</code>
         * @param value The bytes for name to set.
         * @return This builder for chaining.
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          name_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object schema_ = "";
        /**
         * <code>optional string schema = 2;</code>
         * @return Whether the schema field is set.
         */
        public boolean hasSchema() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional string schema = 2;</code>
         * @return The schema.
         */
        public java.lang.String getSchema() {
          java.lang.Object ref = schema_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              schema_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string schema = 2;</code>
         * @return The bytes for schema.
         */
        public com.google.protobuf.ByteString
            getSchemaBytes() {
          java.lang.Object ref = schema_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            schema_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string schema = 2;</code>
         * @param value The schema to set.
         * @return This builder for chaining.
         */
        public Builder setSchema(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          schema_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string schema = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearSchema() {
          bitField0_ = (bitField0_ & ~0x00000002);
          schema_ = getDefaultInstance().getSchema();
          onChanged();
          return this;
        }
        /**
         * <code>optional string schema = 2;</code>
         * @param value The bytes for schema to set.
         * @return This builder for chaining.
         */
        public Builder setSchemaBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          schema_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Collection)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Collection)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Collection DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Collection();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Collection getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Collection>
          PARSER = new com.google.protobuf.AbstractParser<Collection>() {
        @java.lang.Override
        public Collection parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Collection(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Collection> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Collection> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface LimitOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Limit)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required uint64 row_count = 1;</code>
       * @return Whether the rowCount field is set.
       */
      boolean hasRowCount();
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required uint64 row_count = 1;</code>
       * @return The rowCount.
       */
      long getRowCount();
  
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional uint64 offset = 2;</code>
       * @return Whether the offset field is set.
       */
      boolean hasOffset();
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional uint64 offset = 2;</code>
       * @return The offset.
       */
      long getOffset();
    }
    /**
     * Protobuf type {@code Mysqlx.Crud.Limit}
     */
    public static final class Limit extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Limit)
        LimitOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Limit.newBuilder() to construct.
      private Limit(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Limit() {
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Limit();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Limit(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bitField0_ |= 0x00000001;
                rowCount_ = input.readUInt64();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                offset_ = input.readUInt64();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Limit_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Limit_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.class, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder.class);
      }
  
      private int bitField0_;
      public static final int ROW_COUNT_FIELD_NUMBER = 1;
      private long rowCount_;
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required uint64 row_count = 1;</code>
       * @return Whether the rowCount field is set.
       */
      @java.lang.Override
      public boolean hasRowCount() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required uint64 row_count = 1;</code>
       * @return The rowCount.
       */
      @java.lang.Override
      public long getRowCount() {
        return rowCount_;
      }
  
      public static final int OFFSET_FIELD_NUMBER = 2;
      private long offset_;
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional uint64 offset = 2;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional uint64 offset = 2;</code>
       * @return The offset.
       */
      @java.lang.Override
      public long getOffset() {
        return offset_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasRowCount()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeUInt64(1, rowCount_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeUInt64(2, offset_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(1, rowCount_);
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(2, offset_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Limit)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Limit other = (com.mysql.cj.x.protobuf.MysqlxCrud.Limit) obj;
  
        if (hasRowCount() != other.hasRowCount()) return false;
        if (hasRowCount()) {
          if (getRowCount()
              != other.getRowCount()) return false;
        }
        if (hasOffset() != other.hasOffset()) return false;
        if (hasOffset()) {
          if (getOffset()
              != other.getOffset()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRowCount()) {
          hash = (37 * hash) + ROW_COUNT_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getRowCount());
        }
        if (hasOffset()) {
          hash = (37 * hash) + OFFSET_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getOffset());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Limit prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Mysqlx.Crud.Limit}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Limit)
          com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Limit_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Limit_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Limit.class, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Limit.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          rowCount_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          offset_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Limit_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Limit result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Limit result = new com.mysql.cj.x.protobuf.MysqlxCrud.Limit(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.rowCount_ = rowCount_;
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.offset_ = offset_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Limit) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Limit)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Limit other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance()) return this;
          if (other.hasRowCount()) {
            setRowCount(other.getRowCount());
          }
          if (other.hasOffset()) {
            setOffset(other.getOffset());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasRowCount()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Limit parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Limit) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private long rowCount_ ;
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required uint64 row_count = 1;</code>
         * @return Whether the rowCount field is set.
         */
        @java.lang.Override
        public boolean hasRowCount() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required uint64 row_count = 1;</code>
         * @return The rowCount.
         */
        @java.lang.Override
        public long getRowCount() {
          return rowCount_;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required uint64 row_count = 1;</code>
         * @param value The rowCount to set.
         * @return This builder for chaining.
         */
        public Builder setRowCount(long value) {
          bitField0_ |= 0x00000001;
          rowCount_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required uint64 row_count = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearRowCount() {
          bitField0_ = (bitField0_ & ~0x00000001);
          rowCount_ = 0L;
          onChanged();
          return this;
        }
  
        private long offset_ ;
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional uint64 offset = 2;</code>
         * @return Whether the offset field is set.
         */
        @java.lang.Override
        public boolean hasOffset() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional uint64 offset = 2;</code>
         * @return The offset.
         */
        @java.lang.Override
        public long getOffset() {
          return offset_;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional uint64 offset = 2;</code>
         * @param value The offset to set.
         * @return This builder for chaining.
         */
        public Builder setOffset(long value) {
          bitField0_ |= 0x00000002;
          offset_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional uint64 offset = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearOffset() {
          bitField0_ = (bitField0_ & ~0x00000002);
          offset_ = 0L;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Limit)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Limit)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Limit DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Limit();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Limit getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Limit>
          PARSER = new com.google.protobuf.AbstractParser<Limit>() {
        @java.lang.Override
        public Limit parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Limit(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Limit> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Limit> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface LimitExprOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.LimitExpr)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       * @return Whether the rowCount field is set.
       */
      boolean hasRowCount();
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       * @return The rowCount.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getRowCount();
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getRowCountOrBuilder();
  
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       * @return Whether the offset field is set.
       */
      boolean hasOffset();
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       * @return The offset.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getOffset();
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getOffsetOrBuilder();
    }
    /**
     * <pre>
     **
     *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.
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.LimitExpr}
     */
    public static final class LimitExpr extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.LimitExpr)
        LimitExprOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use LimitExpr.newBuilder() to construct.
      private LimitExpr(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private LimitExpr() {
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new LimitExpr();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private LimitExpr(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = rowCount_.toBuilder();
                }
                rowCount_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(rowCount_);
                  rowCount_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000002) != 0)) {
                  subBuilder = offset_.toBuilder();
                }
                offset_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(offset_);
                  offset_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000002;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_LimitExpr_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_LimitExpr_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.class, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder.class);
      }
  
      private int bitField0_;
      public static final int ROW_COUNT_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr rowCount_;
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       * @return Whether the rowCount field is set.
       */
      @java.lang.Override
      public boolean hasRowCount() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       * @return The rowCount.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getRowCount() {
        return rowCount_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : rowCount_;
      }
      /**
       * <pre>
       ** maximum rows to filter 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getRowCountOrBuilder() {
        return rowCount_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : rowCount_;
      }
  
      public static final int OFFSET_FIELD_NUMBER = 2;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr offset_;
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       * @return Whether the offset field is set.
       */
      @java.lang.Override
      public boolean hasOffset() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       * @return The offset.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getOffset() {
        return offset_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : offset_;
      }
      /**
       * <pre>
       ** maximum rows to skip before applying the row_count 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getOffsetOrBuilder() {
        return offset_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : offset_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasRowCount()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getRowCount().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasOffset()) {
          if (!getOffset().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getRowCount());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeMessage(2, getOffset());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getRowCount());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getOffset());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr other = (com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr) obj;
  
        if (hasRowCount() != other.hasRowCount()) return false;
        if (hasRowCount()) {
          if (!getRowCount()
              .equals(other.getRowCount())) return false;
        }
        if (hasOffset() != other.hasOffset()) return false;
        if (hasOffset()) {
          if (!getOffset()
              .equals(other.getOffset())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasRowCount()) {
          hash = (37 * hash) + ROW_COUNT_FIELD_NUMBER;
          hash = (53 * hash) + getRowCount().hashCode();
        }
        if (hasOffset()) {
          hash = (37 * hash) + OFFSET_FIELD_NUMBER;
          hash = (53 * hash) + getOffset().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *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.
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.LimitExpr}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.LimitExpr)
          com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_LimitExpr_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_LimitExpr_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.class, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getRowCountFieldBuilder();
            getOffsetFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (rowCountBuilder_ == null) {
            rowCount_ = null;
          } else {
            rowCountBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          if (offsetBuilder_ == null) {
            offset_ = null;
          } else {
            offsetBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_LimitExpr_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr result = new com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (rowCountBuilder_ == null) {
              result.rowCount_ = rowCount_;
            } else {
              result.rowCount_ = rowCountBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            if (offsetBuilder_ == null) {
              result.offset_ = offset_;
            } else {
              result.offset_ = offsetBuilder_.build();
            }
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance()) return this;
          if (other.hasRowCount()) {
            mergeRowCount(other.getRowCount());
          }
          if (other.hasOffset()) {
            mergeOffset(other.getOffset());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasRowCount()) {
            return false;
          }
          if (!getRowCount().isInitialized()) {
            return false;
          }
          if (hasOffset()) {
            if (!getOffset().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr rowCount_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> rowCountBuilder_;
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         * @return Whether the rowCount field is set.
         */
        public boolean hasRowCount() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         * @return The rowCount.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getRowCount() {
          if (rowCountBuilder_ == null) {
            return rowCount_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : rowCount_;
          } else {
            return rowCountBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public Builder setRowCount(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (rowCountBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            rowCount_ = value;
            onChanged();
          } else {
            rowCountBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public Builder setRowCount(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (rowCountBuilder_ == null) {
            rowCount_ = builderForValue.build();
            onChanged();
          } else {
            rowCountBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public Builder mergeRowCount(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (rowCountBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                rowCount_ != null &&
                rowCount_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              rowCount_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(rowCount_).mergeFrom(value).buildPartial();
            } else {
              rowCount_ = value;
            }
            onChanged();
          } else {
            rowCountBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public Builder clearRowCount() {
          if (rowCountBuilder_ == null) {
            rowCount_ = null;
            onChanged();
          } else {
            rowCountBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getRowCountBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getRowCountFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getRowCountOrBuilder() {
          if (rowCountBuilder_ != null) {
            return rowCountBuilder_.getMessageOrBuilder();
          } else {
            return rowCount_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : rowCount_;
          }
        }
        /**
         * <pre>
         ** maximum rows to filter 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.Expr row_count = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getRowCountFieldBuilder() {
          if (rowCountBuilder_ == null) {
            rowCountBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getRowCount(),
                    getParentForChildren(),
                    isClean());
            rowCount_ = null;
          }
          return rowCountBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr offset_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> offsetBuilder_;
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         * @return Whether the offset field is set.
         */
        public boolean hasOffset() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         * @return The offset.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getOffset() {
          if (offsetBuilder_ == null) {
            return offset_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : offset_;
          } else {
            return offsetBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public Builder setOffset(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (offsetBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            offset_ = value;
            onChanged();
          } else {
            offsetBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public Builder setOffset(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (offsetBuilder_ == null) {
            offset_ = builderForValue.build();
            onChanged();
          } else {
            offsetBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public Builder mergeOffset(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (offsetBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
                offset_ != null &&
                offset_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              offset_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(offset_).mergeFrom(value).buildPartial();
            } else {
              offset_ = value;
            }
            onChanged();
          } else {
            offsetBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000002;
          return this;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public Builder clearOffset() {
          if (offsetBuilder_ == null) {
            offset_ = null;
            onChanged();
          } else {
            offsetBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getOffsetBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getOffsetFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getOffsetOrBuilder() {
          if (offsetBuilder_ != null) {
            return offsetBuilder_.getMessageOrBuilder();
          } else {
            return offset_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : offset_;
          }
        }
        /**
         * <pre>
         ** maximum rows to skip before applying the row_count 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr offset = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getOffsetFieldBuilder() {
          if (offsetBuilder_ == null) {
            offsetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getOffset(),
                    getParentForChildren(),
                    isClean());
            offset_ = null;
          }
          return offsetBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.LimitExpr)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.LimitExpr)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<LimitExpr>
          PARSER = new com.google.protobuf.AbstractParser<LimitExpr>() {
        @java.lang.Override
        public LimitExpr parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new LimitExpr(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<LimitExpr> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<LimitExpr> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface OrderOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Order)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       * @return Whether the expr field is set.
       */
      boolean hasExpr();
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       * @return The expr.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getExpr();
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getExprOrBuilder();
  
      /**
       * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
       * @return Whether the direction field is set.
       */
      boolean hasDirection();
      /**
       * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
       * @return The direction.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction getDirection();
    }
    /**
     * <pre>
     **
     *Sort order
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.Order}
     */
    public static final class Order extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Order)
        OrderOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Order.newBuilder() to construct.
      private Order(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Order() {
        direction_ = 1;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Order();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Order(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = expr_.toBuilder();
                }
                expr_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(expr_);
                  expr_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction value = com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  direction_ = rawValue;
                }
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Order_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Order_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Order.class, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder.class);
      }
  
      /**
       * Protobuf enum {@code Mysqlx.Crud.Order.Direction}
       */
      public enum Direction
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>ASC = 1;</code>
         */
        ASC(1),
        /**
         * <code>DESC = 2;</code>
         */
        DESC(2),
        ;
  
        /**
         * <code>ASC = 1;</code>
         */
        public static final int ASC_VALUE = 1;
        /**
         * <code>DESC = 2;</code>
         */
        public static final int DESC_VALUE = 2;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static Direction valueOf(int value) {
          return forNumber(value);
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static Direction forNumber(int value) {
          switch (value) {
            case 1: return ASC;
            case 2: return DESC;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<Direction>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Direction> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Direction>() {
                public Direction findValueByNumber(int number) {
                  return Direction.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final Direction[] VALUES = values();
  
        public static Direction valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private Direction(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.Order.Direction)
      }
  
      private int bitField0_;
      public static final int EXPR_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr expr_;
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       * @return Whether the expr field is set.
       */
      @java.lang.Override
      public boolean hasExpr() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       * @return The expr.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getExpr() {
        return expr_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : expr_;
      }
      /**
       * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getExprOrBuilder() {
        return expr_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : expr_;
      }
  
      public static final int DIRECTION_FIELD_NUMBER = 2;
      private int direction_;
      /**
       * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
       * @return Whether the direction field is set.
       */
      @java.lang.Override public boolean hasDirection() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
       * @return The direction.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction getDirection() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction result = com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction.valueOf(direction_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction.ASC : result;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasExpr()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getExpr().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getExpr());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(2, direction_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getExpr());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, direction_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Order)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Order other = (com.mysql.cj.x.protobuf.MysqlxCrud.Order) obj;
  
        if (hasExpr() != other.hasExpr()) return false;
        if (hasExpr()) {
          if (!getExpr()
              .equals(other.getExpr())) return false;
        }
        if (hasDirection() != other.hasDirection()) return false;
        if (hasDirection()) {
          if (direction_ != other.direction_) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasExpr()) {
          hash = (37 * hash) + EXPR_FIELD_NUMBER;
          hash = (53 * hash) + getExpr().hashCode();
        }
        if (hasDirection()) {
          hash = (37 * hash) + DIRECTION_FIELD_NUMBER;
          hash = (53 * hash) + direction_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Order prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *Sort order
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Order}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Order)
          com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Order_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Order_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Order.class, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Order.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getExprFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (exprBuilder_ == null) {
            expr_ = null;
          } else {
            exprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          direction_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Order_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Order result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Order result = new com.mysql.cj.x.protobuf.MysqlxCrud.Order(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (exprBuilder_ == null) {
              result.expr_ = expr_;
            } else {
              result.expr_ = exprBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.direction_ = direction_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Order) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Order)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Order other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance()) return this;
          if (other.hasExpr()) {
            mergeExpr(other.getExpr());
          }
          if (other.hasDirection()) {
            setDirection(other.getDirection());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasExpr()) {
            return false;
          }
          if (!getExpr().isInitialized()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Order parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Order) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr expr_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> exprBuilder_;
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         * @return Whether the expr field is set.
         */
        public boolean hasExpr() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         * @return The expr.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getExpr() {
          if (exprBuilder_ == null) {
            return expr_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : expr_;
          } else {
            return exprBuilder_.getMessage();
          }
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public Builder setExpr(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (exprBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            expr_ = value;
            onChanged();
          } else {
            exprBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public Builder setExpr(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (exprBuilder_ == null) {
            expr_ = builderForValue.build();
            onChanged();
          } else {
            exprBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public Builder mergeExpr(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (exprBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                expr_ != null &&
                expr_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              expr_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(expr_).mergeFrom(value).buildPartial();
            } else {
              expr_ = value;
            }
            onChanged();
          } else {
            exprBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public Builder clearExpr() {
          if (exprBuilder_ == null) {
            expr_ = null;
            onChanged();
          } else {
            exprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getExprBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getExprFieldBuilder().getBuilder();
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getExprOrBuilder() {
          if (exprBuilder_ != null) {
            return exprBuilder_.getMessageOrBuilder();
          } else {
            return expr_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : expr_;
          }
        }
        /**
         * <code>required .Mysqlx.Expr.Expr expr = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getExprFieldBuilder() {
          if (exprBuilder_ == null) {
            exprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getExpr(),
                    getParentForChildren(),
                    isClean());
            expr_ = null;
          }
          return exprBuilder_;
        }
  
        private int direction_ = 1;
        /**
         * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
         * @return Whether the direction field is set.
         */
        @java.lang.Override public boolean hasDirection() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
         * @return The direction.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction getDirection() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction result = com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction.valueOf(direction_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction.ASC : result;
        }
        /**
         * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
         * @param value The direction to set.
         * @return This builder for chaining.
         */
        public Builder setDirection(com.mysql.cj.x.protobuf.MysqlxCrud.Order.Direction value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          direction_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .Mysqlx.Crud.Order.Direction direction = 2 [default = ASC];</code>
         * @return This builder for chaining.
         */
        public Builder clearDirection() {
          bitField0_ = (bitField0_ & ~0x00000002);
          direction_ = 1;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Order)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Order)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Order DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Order();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Order getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Order>
          PARSER = new com.google.protobuf.AbstractParser<Order>() {
        @java.lang.Override
        public Order parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Order(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Order> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Order> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Order getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UpdateOperationOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.UpdateOperation)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       * @return Whether the source field is set.
       */
      boolean hasSource();
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       * @return The source.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier getSource();
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder getSourceOrBuilder();
  
      /**
       * <pre>
       ** the type of operation to be performed 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
       * @return Whether the operation field is set.
       */
      boolean hasOperation();
      /**
       * <pre>
       ** the type of operation to be performed 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
       * @return The operation.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType getOperation();
  
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       * @return Whether the value field is set.
       */
      boolean hasValue();
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       * @return The value.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getValue();
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getValueOrBuilder();
    }
    /**
     * Protobuf type {@code Mysqlx.Crud.UpdateOperation}
     */
    public static final class UpdateOperation extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.UpdateOperation)
        UpdateOperationOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use UpdateOperation.newBuilder() to construct.
      private UpdateOperation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UpdateOperation() {
        operation_ = 1;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new UpdateOperation();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UpdateOperation(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = source_.toBuilder();
                }
                source_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(source_);
                  source_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType value = com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  operation_ = rawValue;
                }
                break;
              }
              case 26: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) != 0)) {
                  subBuilder = value_.toBuilder();
                }
                value_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(value_);
                  value_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_UpdateOperation_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_UpdateOperation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.class, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder.class);
      }
  
      /**
       * Protobuf enum {@code Mysqlx.Crud.UpdateOperation.UpdateType}
       */
      public enum UpdateType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         ** only allowed for TABLE 
         * </pre>
         *
         * <code>SET = 1;</code>
         */
        SET(1),
        /**
         * <pre>
         ** no value (removes the identified path from a object or array) 
         * </pre>
         *
         * <code>ITEM_REMOVE = 2;</code>
         */
        ITEM_REMOVE(2),
        /**
         * <pre>
         ** sets the new value on the identified path 
         * </pre>
         *
         * <code>ITEM_SET = 3;</code>
         */
        ITEM_SET(3),
        /**
         * <pre>
         ** replaces a value if the path exists 
         * </pre>
         *
         * <code>ITEM_REPLACE = 4;</code>
         */
        ITEM_REPLACE(4),
        /**
         * <pre>
         ** source and value must be documents 
         * </pre>
         *
         * <code>ITEM_MERGE = 5;</code>
         */
        ITEM_MERGE(5),
        /**
         * <pre>
         ** insert the value in the array at the index identified in the source path 
         * </pre>
         *
         * <code>ARRAY_INSERT = 6;</code>
         */
        ARRAY_INSERT(6),
        /**
         * <pre>
         ** append the value on the array at the identified path 
         * </pre>
         *
         * <code>ARRAY_APPEND = 7;</code>
         */
        ARRAY_APPEND(7),
        /**
         * <pre>
         ** merge JSON object value with the provided patch expression 
         * </pre>
         *
         * <code>MERGE_PATCH = 8;</code>
         */
        MERGE_PATCH(8),
        ;
  
        /**
         * <pre>
         ** only allowed for TABLE 
         * </pre>
         *
         * <code>SET = 1;</code>
         */
        public static final int SET_VALUE = 1;
        /**
         * <pre>
         ** no value (removes the identified path from a object or array) 
         * </pre>
         *
         * <code>ITEM_REMOVE = 2;</code>
         */
        public static final int ITEM_REMOVE_VALUE = 2;
        /**
         * <pre>
         ** sets the new value on the identified path 
         * </pre>
         *
         * <code>ITEM_SET = 3;</code>
         */
        public static final int ITEM_SET_VALUE = 3;
        /**
         * <pre>
         ** replaces a value if the path exists 
         * </pre>
         *
         * <code>ITEM_REPLACE = 4;</code>
         */
        public static final int ITEM_REPLACE_VALUE = 4;
        /**
         * <pre>
         ** source and value must be documents 
         * </pre>
         *
         * <code>ITEM_MERGE = 5;</code>
         */
        public static final int ITEM_MERGE_VALUE = 5;
        /**
         * <pre>
         ** insert the value in the array at the index identified in the source path 
         * </pre>
         *
         * <code>ARRAY_INSERT = 6;</code>
         */
        public static final int ARRAY_INSERT_VALUE = 6;
        /**
         * <pre>
         ** append the value on the array at the identified path 
         * </pre>
         *
         * <code>ARRAY_APPEND = 7;</code>
         */
        public static final int ARRAY_APPEND_VALUE = 7;
        /**
         * <pre>
         ** merge JSON object value with the provided patch expression 
         * </pre>
         *
         * <code>MERGE_PATCH = 8;</code>
         */
        public static final int MERGE_PATCH_VALUE = 8;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static UpdateType valueOf(int value) {
          return forNumber(value);
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static UpdateType forNumber(int value) {
          switch (value) {
            case 1: return SET;
            case 2: return ITEM_REMOVE;
            case 3: return ITEM_SET;
            case 4: return ITEM_REPLACE;
            case 5: return ITEM_MERGE;
            case 6: return ARRAY_INSERT;
            case 7: return ARRAY_APPEND;
            case 8: return MERGE_PATCH;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<UpdateType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            UpdateType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<UpdateType>() {
                public UpdateType findValueByNumber(int number) {
                  return UpdateType.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final UpdateType[] VALUES = values();
  
        public static UpdateType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private UpdateType(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.UpdateOperation.UpdateType)
      }
  
      private int bitField0_;
      public static final int SOURCE_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier source_;
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       * @return Whether the source field is set.
       */
      @java.lang.Override
      public boolean hasSource() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       * @return The source.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier getSource() {
        return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.getDefaultInstance() : source_;
      }
      /**
       * <pre>
       ** 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
       *&#64;note in both cases, schema and table must be not set 
       * </pre>
       *
       * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder getSourceOrBuilder() {
        return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.getDefaultInstance() : source_;
      }
  
      public static final int OPERATION_FIELD_NUMBER = 2;
      private int operation_;
      /**
       * <pre>
       ** the type of operation to be performed 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
       * @return Whether the operation field is set.
       */
      @java.lang.Override public boolean hasOperation() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** the type of operation to be performed 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
       * @return The operation.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType getOperation() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType result = com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType.valueOf(operation_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType.SET : result;
      }
  
      public static final int VALUE_FIELD_NUMBER = 3;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr value_;
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       * @return Whether the value field is set.
       */
      @java.lang.Override
      public boolean hasValue() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       * @return The value.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getValue() {
        return value_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : value_;
      }
      /**
       * <pre>
       ** an expression to be computed as the new value for the operation 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getValueOrBuilder() {
        return value_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : value_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasSource()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasOperation()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getSource().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasValue()) {
          if (!getValue().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getSource());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(2, operation_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeMessage(3, getValue());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getSource());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, operation_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getValue());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation other = (com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation) obj;
  
        if (hasSource() != other.hasSource()) return false;
        if (hasSource()) {
          if (!getSource()
              .equals(other.getSource())) return false;
        }
        if (hasOperation() != other.hasOperation()) return false;
        if (hasOperation()) {
          if (operation_ != other.operation_) return false;
        }
        if (hasValue() != other.hasValue()) return false;
        if (hasValue()) {
          if (!getValue()
              .equals(other.getValue())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSource()) {
          hash = (37 * hash) + SOURCE_FIELD_NUMBER;
          hash = (53 * hash) + getSource().hashCode();
        }
        if (hasOperation()) {
          hash = (37 * hash) + OPERATION_FIELD_NUMBER;
          hash = (53 * hash) + operation_;
        }
        if (hasValue()) {
          hash = (37 * hash) + VALUE_FIELD_NUMBER;
          hash = (53 * hash) + getValue().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code Mysqlx.Crud.UpdateOperation}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.UpdateOperation)
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_UpdateOperation_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_UpdateOperation_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.class, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getSourceFieldBuilder();
            getValueFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (sourceBuilder_ == null) {
            source_ = null;
          } else {
            sourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          operation_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (valueBuilder_ == null) {
            value_ = null;
          } else {
            valueBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_UpdateOperation_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation result = new com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (sourceBuilder_ == null) {
              result.source_ = source_;
            } else {
              result.source_ = sourceBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.operation_ = operation_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            if (valueBuilder_ == null) {
              result.value_ = value_;
            } else {
              result.value_ = valueBuilder_.build();
            }
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.getDefaultInstance()) return this;
          if (other.hasSource()) {
            mergeSource(other.getSource());
          }
          if (other.hasOperation()) {
            setOperation(other.getOperation());
          }
          if (other.hasValue()) {
            mergeValue(other.getValue());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasSource()) {
            return false;
          }
          if (!hasOperation()) {
            return false;
          }
          if (!getSource().isInitialized()) {
            return false;
          }
          if (hasValue()) {
            if (!getValue().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier source_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder> sourceBuilder_;
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         * @return Whether the source field is set.
         */
        public boolean hasSource() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         * @return The source.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier getSource() {
          if (sourceBuilder_ == null) {
            return source_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.getDefaultInstance() : source_;
          } else {
            return sourceBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public Builder setSource(com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier value) {
          if (sourceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            source_ = value;
            onChanged();
          } else {
            sourceBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public Builder setSource(
            com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder builderForValue) {
          if (sourceBuilder_ == null) {
            source_ = builderForValue.build();
            onChanged();
          } else {
            sourceBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public Builder mergeSource(com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier value) {
          if (sourceBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                source_ != null &&
                source_ != com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.getDefaultInstance()) {
              source_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.newBuilder(source_).mergeFrom(value).buildPartial();
            } else {
              source_ = value;
            }
            onChanged();
          } else {
            sourceBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public Builder clearSource() {
          if (sourceBuilder_ == null) {
            source_ = null;
            onChanged();
          } else {
            sourceBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder getSourceBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getSourceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder getSourceOrBuilder() {
          if (sourceBuilder_ != null) {
            return sourceBuilder_.getMessageOrBuilder();
          } else {
            return source_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.getDefaultInstance() : source_;
          }
        }
        /**
         * <pre>
         ** 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
         *&#64;note in both cases, schema and table must be not set 
         * </pre>
         *
         * <code>required .Mysqlx.Expr.ColumnIdentifier source = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder> 
            getSourceFieldBuilder() {
          if (sourceBuilder_ == null) {
            sourceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifier.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ColumnIdentifierOrBuilder>(
                    getSource(),
                    getParentForChildren(),
                    isClean());
            source_ = null;
          }
          return sourceBuilder_;
        }
  
        private int operation_ = 1;
        /**
         * <pre>
         ** the type of operation to be performed 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
         * @return Whether the operation field is set.
         */
        @java.lang.Override public boolean hasOperation() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** the type of operation to be performed 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
         * @return The operation.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType getOperation() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType result = com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType.valueOf(operation_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType.SET : result;
        }
        /**
         * <pre>
         ** the type of operation to be performed 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
         * @param value The operation to set.
         * @return This builder for chaining.
         */
        public Builder setOperation(com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.UpdateType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          operation_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** the type of operation to be performed 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.UpdateOperation.UpdateType operation = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearOperation() {
          bitField0_ = (bitField0_ & ~0x00000002);
          operation_ = 1;
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr value_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> valueBuilder_;
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         * @return Whether the value field is set.
         */
        public boolean hasValue() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         * @return The value.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getValue() {
          if (valueBuilder_ == null) {
            return value_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : value_;
          } else {
            return valueBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public Builder setValue(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (valueBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            value_ = value;
            onChanged();
          } else {
            valueBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public Builder setValue(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (valueBuilder_ == null) {
            value_ = builderForValue.build();
            onChanged();
          } else {
            valueBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public Builder mergeValue(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (valueBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
                value_ != null &&
                value_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              value_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(value_).mergeFrom(value).buildPartial();
            } else {
              value_ = value;
            }
            onChanged();
          } else {
            valueBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public Builder clearValue() {
          if (valueBuilder_ == null) {
            value_ = null;
            onChanged();
          } else {
            valueBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getValueBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getValueFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getValueOrBuilder() {
          if (valueBuilder_ != null) {
            return valueBuilder_.getMessageOrBuilder();
          } else {
            return value_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : value_;
          }
        }
        /**
         * <pre>
         ** an expression to be computed as the new value for the operation 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr value = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getValueFieldBuilder() {
          if (valueBuilder_ == null) {
            valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getValue(),
                    getParentForChildren(),
                    isClean());
            value_ = null;
          }
          return valueBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.UpdateOperation)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.UpdateOperation)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UpdateOperation>
          PARSER = new com.google.protobuf.AbstractParser<UpdateOperation>() {
        @java.lang.Override
        public UpdateOperation parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new UpdateOperation(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UpdateOperation> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UpdateOperation> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface FindOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Find)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return Whether the dataModel field is set.
       */
      boolean hasDataModel();
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return The dataModel.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel();
  
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection> 
          getProjectionList();
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Projection getProjection(int index);
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      int getProjectionCount();
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder> 
          getProjectionOrBuilderList();
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder getProjectionOrBuilder(
          int index);
  
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> 
          getArgsList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index);
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      int getArgsCount();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index);
  
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       * @return Whether the criteria field is set.
       */
      boolean hasCriteria();
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       * @return The criteria.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria();
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder();
  
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       * @return Whether the limit field is set.
       */
      boolean hasLimit();
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       * @return The limit.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit();
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder();
  
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> 
          getOrderList();
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index);
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      int getOrderCount();
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList();
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index);
  
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> 
          getGroupingList();
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGrouping(int index);
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      int getGroupingCount();
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
          getGroupingOrBuilderList();
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingOrBuilder(
          int index);
  
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       * @return Whether the groupingCriteria field is set.
       */
      boolean hasGroupingCriteria();
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       * @return The groupingCriteria.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGroupingCriteria();
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingCriteriaOrBuilder();
  
      /**
       * <pre>
       ** perform row locking on matches 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
       * @return Whether the locking field is set.
       */
      boolean hasLocking();
      /**
       * <pre>
       ** perform row locking on matches 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
       * @return The locking.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock getLocking();
  
      /**
       * <pre>
       ** additional options how to handle locked rows 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
       * @return Whether the lockingOptions field is set.
       */
      boolean hasLockingOptions();
      /**
       * <pre>
       ** additional options how to handle locked rows 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
       * @return The lockingOptions.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions getLockingOptions();
  
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       * @return Whether the limitExpr field is set.
       */
      boolean hasLimitExpr();
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       * @return The limitExpr.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr();
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder();
    }
    /**
     * <pre>
     **
     *Find Documents/Rows in a Collection/Table
     *&#64;startuml
     *client -&gt; server: Find
     *... one or more Resultset ...
     *&#64;enduml
     *&#64;returns &#64;ref Mysqlx::Resultset
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.Find}
     */
    public static final class Find extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Find)
        FindOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Find.newBuilder() to construct.
      private Find(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Find() {
        dataModel_ = 1;
        projection_ = java.util.Collections.emptyList();
        args_ = java.util.Collections.emptyList();
        order_ = java.util.Collections.emptyList();
        grouping_ = java.util.Collections.emptyList();
        locking_ = 1;
        lockingOptions_ = 1;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Find();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Find(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  dataModel_ = rawValue;
                }
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  projection_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Projection>();
                  mutable_bitField0_ |= 0x00000004;
                }
                projection_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Projection.PARSER, extensionRegistry));
                break;
              }
              case 42: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) != 0)) {
                  subBuilder = criteria_.toBuilder();
                }
                criteria_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(criteria_);
                  criteria_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 50: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) != 0)) {
                  subBuilder = limit_.toBuilder();
                }
                limit_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Limit.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limit_);
                  limit_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 58: {
                if (!((mutable_bitField0_ & 0x00000040) != 0)) {
                  order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>();
                  mutable_bitField0_ |= 0x00000040;
                }
                order_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Order.PARSER, extensionRegistry));
                break;
              }
              case 66: {
                if (!((mutable_bitField0_ & 0x00000080) != 0)) {
                  grouping_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.Expr>();
                  mutable_bitField0_ |= 0x00000080;
                }
                grouping_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry));
                break;
              }
              case 74: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000010) != 0)) {
                  subBuilder = groupingCriteria_.toBuilder();
                }
                groupingCriteria_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(groupingCriteria_);
                  groupingCriteria_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000010;
                break;
              }
              case 90: {
                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                  args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>();
                  mutable_bitField0_ |= 0x00000008;
                }
                args_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.PARSER, extensionRegistry));
                break;
              }
              case 96: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock value = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(12, rawValue);
                } else {
                  bitField0_ |= 0x00000020;
                  locking_ = rawValue;
                }
                break;
              }
              case 104: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions value = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(13, rawValue);
                } else {
                  bitField0_ |= 0x00000040;
                  lockingOptions_ = rawValue;
                }
                break;
              }
              case 114: {
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000080) != 0)) {
                  subBuilder = limitExpr_.toBuilder();
                }
                limitExpr_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limitExpr_);
                  limitExpr_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000080;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            projection_ = java.util.Collections.unmodifiableList(projection_);
          }
          if (((mutable_bitField0_ & 0x00000040) != 0)) {
            order_ = java.util.Collections.unmodifiableList(order_);
          }
          if (((mutable_bitField0_ & 0x00000080) != 0)) {
            grouping_ = java.util.Collections.unmodifiableList(grouping_);
          }
          if (((mutable_bitField0_ & 0x00000008) != 0)) {
            args_ = java.util.Collections.unmodifiableList(args_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Find_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Find_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.class, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder.class);
      }
  
      /**
       * Protobuf enum {@code Mysqlx.Crud.Find.RowLock}
       */
      public enum RowLock
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         ** Lock matching rows against updates 
         * </pre>
         *
         * <code>SHARED_LOCK = 1;</code>
         */
        SHARED_LOCK(1),
        /**
         * <pre>
         ** Lock matching rows so no other transaction can read or write to it 
         * </pre>
         *
         * <code>EXCLUSIVE_LOCK = 2;</code>
         */
        EXCLUSIVE_LOCK(2),
        ;
  
        /**
         * <pre>
         ** Lock matching rows against updates 
         * </pre>
         *
         * <code>SHARED_LOCK = 1;</code>
         */
        public static final int SHARED_LOCK_VALUE = 1;
        /**
         * <pre>
         ** Lock matching rows so no other transaction can read or write to it 
         * </pre>
         *
         * <code>EXCLUSIVE_LOCK = 2;</code>
         */
        public static final int EXCLUSIVE_LOCK_VALUE = 2;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static RowLock valueOf(int value) {
          return forNumber(value);
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static RowLock forNumber(int value) {
          switch (value) {
            case 1: return SHARED_LOCK;
            case 2: return EXCLUSIVE_LOCK;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<RowLock>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            RowLock> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<RowLock>() {
                public RowLock findValueByNumber(int number) {
                  return RowLock.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final RowLock[] VALUES = values();
  
        public static RowLock valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private RowLock(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.Find.RowLock)
      }
  
      /**
       * Protobuf enum {@code Mysqlx.Crud.Find.RowLockOptions}
       */
      public enum RowLockOptions
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <pre>
         ** Do not wait to acquire row lock, fail with an error
         *if a requested row is locked 
         * </pre>
         *
         * <code>NOWAIT = 1;</code>
         */
        NOWAIT(1),
        /**
         * <pre>
         ** Do not wait to acquire a row lock,
         *remove locked rows from the result set 
         * </pre>
         *
         * <code>SKIP_LOCKED = 2;</code>
         */
        SKIP_LOCKED(2),
        ;
  
        /**
         * <pre>
         ** Do not wait to acquire row lock, fail with an error
         *if a requested row is locked 
         * </pre>
         *
         * <code>NOWAIT = 1;</code>
         */
        public static final int NOWAIT_VALUE = 1;
        /**
         * <pre>
         ** Do not wait to acquire a row lock,
         *remove locked rows from the result set 
         * </pre>
         *
         * <code>SKIP_LOCKED = 2;</code>
         */
        public static final int SKIP_LOCKED_VALUE = 2;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static RowLockOptions valueOf(int value) {
          return forNumber(value);
        }
  
        /**
         * @param value The numeric wire value of the corresponding enum entry.
         * @return The enum associated with the given numeric wire value.
         */
        public static RowLockOptions forNumber(int value) {
          switch (value) {
            case 1: return NOWAIT;
            case 2: return SKIP_LOCKED;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<RowLockOptions>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            RowLockOptions> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<RowLockOptions>() {
                public RowLockOptions findValueByNumber(int number) {
                  return RowLockOptions.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDescriptor().getEnumTypes().get(1);
        }
  
        private static final RowLockOptions[] VALUES = values();
  
        public static RowLockOptions valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private RowLockOptions(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:Mysqlx.Crud.Find.RowLockOptions)
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 2;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** collection in which to find 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DATA_MODEL_FIELD_NUMBER = 3;
      private int dataModel_;
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return Whether the dataModel field is set.
       */
      @java.lang.Override public boolean hasDataModel() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return The dataModel.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
      }
  
      public static final int PROJECTION_FIELD_NUMBER = 4;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection> projection_;
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection> getProjectionList() {
        return projection_;
      }
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder> 
          getProjectionOrBuilderList() {
        return projection_;
      }
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      @java.lang.Override
      public int getProjectionCount() {
        return projection_.size();
      }
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Projection getProjection(int index) {
        return projection_.get(index);
      }
      /**
       * <pre>
       ** list of column projections that shall be returned 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder getProjectionOrBuilder(
          int index) {
        return projection_.get(index);
      }
  
      public static final int ARGS_FIELD_NUMBER = 11;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_;
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      @java.lang.Override
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index) {
        return args_.get(index);
      }
  
      public static final int CRITERIA_FIELD_NUMBER = 5;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       * @return Whether the criteria field is set.
       */
      @java.lang.Override
      public boolean hasCriteria() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       * @return The criteria.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
      /**
       * <pre>
       ** filter criteria 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
  
      public static final int LIMIT_FIELD_NUMBER = 6;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       * @return Whether the limit field is set.
       */
      @java.lang.Override
      public boolean hasLimit() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       * @return The limit.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 7;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_;
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
        return order_;
      }
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList() {
        return order_;
      }
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      @java.lang.Override
      public int getOrderCount() {
        return order_.size();
      }
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
        return order_.get(index);
      }
      /**
       * <pre>
       ** sort-order in which the rows/document shall be returned in 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index) {
        return order_.get(index);
      }
  
      public static final int GROUPING_FIELD_NUMBER = 8;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> grouping_;
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> getGroupingList() {
        return grouping_;
      }
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
          getGroupingOrBuilderList() {
        return grouping_;
      }
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      @java.lang.Override
      public int getGroupingCount() {
        return grouping_.size();
      }
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGrouping(int index) {
        return grouping_.get(index);
      }
      /**
       * <pre>
       ** column expression list for aggregation (GROUP BY) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingOrBuilder(
          int index) {
        return grouping_.get(index);
      }
  
      public static final int GROUPING_CRITERIA_FIELD_NUMBER = 9;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr groupingCriteria_;
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       * @return Whether the groupingCriteria field is set.
       */
      @java.lang.Override
      public boolean hasGroupingCriteria() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       * @return The groupingCriteria.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGroupingCriteria() {
        return groupingCriteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : groupingCriteria_;
      }
      /**
       * <pre>
       ** filter criteria for aggregated groups 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingCriteriaOrBuilder() {
        return groupingCriteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : groupingCriteria_;
      }
  
      public static final int LOCKING_FIELD_NUMBER = 12;
      private int locking_;
      /**
       * <pre>
       ** perform row locking on matches 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
       * @return Whether the locking field is set.
       */
      @java.lang.Override public boolean hasLocking() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       ** perform row locking on matches 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
       * @return The locking.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock getLocking() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock result = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock.valueOf(locking_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock.SHARED_LOCK : result;
      }
  
      public static final int LOCKING_OPTIONS_FIELD_NUMBER = 13;
      private int lockingOptions_;
      /**
       * <pre>
       ** additional options how to handle locked rows 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
       * @return Whether the lockingOptions field is set.
       */
      @java.lang.Override public boolean hasLockingOptions() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       ** additional options how to handle locked rows 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
       * @return The lockingOptions.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions getLockingOptions() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions result = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions.valueOf(lockingOptions_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions.NOWAIT : result;
      }
  
      public static final int LIMIT_EXPR_FIELD_NUMBER = 14;
      private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       * @return Whether the limitExpr field is set.
       */
      @java.lang.Override
      public boolean hasLimitExpr() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       * @return The limitExpr.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
      /**
       * <pre>
       ** numbers of rows that shall be skipped and returned
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getProjectionCount(); i++) {
          if (!getProjection(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getArgsCount(); i++) {
          if (!getArgs(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasCriteria()) {
          if (!getCriteria().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimit()) {
          if (!getLimit().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getOrderCount(); i++) {
          if (!getOrder(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getGroupingCount(); i++) {
          if (!getGrouping(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasGroupingCriteria()) {
          if (!getGroupingCriteria().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimitExpr()) {
          if (!getLimitExpr().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(2, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(3, dataModel_);
        }
        for (int i = 0; i < projection_.size(); i++) {
          output.writeMessage(4, projection_.get(i));
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeMessage(5, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeMessage(6, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          output.writeMessage(7, order_.get(i));
        }
        for (int i = 0; i < grouping_.size(); i++) {
          output.writeMessage(8, grouping_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeMessage(9, getGroupingCriteria());
        }
        for (int i = 0; i < args_.size(); i++) {
          output.writeMessage(11, args_.get(i));
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeEnum(12, locking_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeEnum(13, lockingOptions_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          output.writeMessage(14, getLimitExpr());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, dataModel_);
        }
        for (int i = 0; i < projection_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, projection_.get(i));
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, order_.get(i));
        }
        for (int i = 0; i < grouping_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, grouping_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, getGroupingCriteria());
        }
        for (int i = 0; i < args_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(11, args_.get(i));
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(12, locking_);
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(13, lockingOptions_);
        }
        if (((bitField0_ & 0x00000080) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(14, getLimitExpr());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Find)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Find other = (com.mysql.cj.x.protobuf.MysqlxCrud.Find) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDataModel() != other.hasDataModel()) return false;
        if (hasDataModel()) {
          if (dataModel_ != other.dataModel_) return false;
        }
        if (!getProjectionList()
            .equals(other.getProjectionList())) return false;
        if (!getArgsList()
            .equals(other.getArgsList())) return false;
        if (hasCriteria() != other.hasCriteria()) return false;
        if (hasCriteria()) {
          if (!getCriteria()
              .equals(other.getCriteria())) return false;
        }
        if (hasLimit() != other.hasLimit()) return false;
        if (hasLimit()) {
          if (!getLimit()
              .equals(other.getLimit())) return false;
        }
        if (!getOrderList()
            .equals(other.getOrderList())) return false;
        if (!getGroupingList()
            .equals(other.getGroupingList())) return false;
        if (hasGroupingCriteria() != other.hasGroupingCriteria()) return false;
        if (hasGroupingCriteria()) {
          if (!getGroupingCriteria()
              .equals(other.getGroupingCriteria())) return false;
        }
        if (hasLocking() != other.hasLocking()) return false;
        if (hasLocking()) {
          if (locking_ != other.locking_) return false;
        }
        if (hasLockingOptions() != other.hasLockingOptions()) return false;
        if (hasLockingOptions()) {
          if (lockingOptions_ != other.lockingOptions_) return false;
        }
        if (hasLimitExpr() != other.hasLimitExpr()) return false;
        if (hasLimitExpr()) {
          if (!getLimitExpr()
              .equals(other.getLimitExpr())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDataModel()) {
          hash = (37 * hash) + DATA_MODEL_FIELD_NUMBER;
          hash = (53 * hash) + dataModel_;
        }
        if (getProjectionCount() > 0) {
          hash = (37 * hash) + PROJECTION_FIELD_NUMBER;
          hash = (53 * hash) + getProjectionList().hashCode();
        }
        if (getArgsCount() > 0) {
          hash = (37 * hash) + ARGS_FIELD_NUMBER;
          hash = (53 * hash) + getArgsList().hashCode();
        }
        if (hasCriteria()) {
          hash = (37 * hash) + CRITERIA_FIELD_NUMBER;
          hash = (53 * hash) + getCriteria().hashCode();
        }
        if (hasLimit()) {
          hash = (37 * hash) + LIMIT_FIELD_NUMBER;
          hash = (53 * hash) + getLimit().hashCode();
        }
        if (getOrderCount() > 0) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrderList().hashCode();
        }
        if (getGroupingCount() > 0) {
          hash = (37 * hash) + GROUPING_FIELD_NUMBER;
          hash = (53 * hash) + getGroupingList().hashCode();
        }
        if (hasGroupingCriteria()) {
          hash = (37 * hash) + GROUPING_CRITERIA_FIELD_NUMBER;
          hash = (53 * hash) + getGroupingCriteria().hashCode();
        }
        if (hasLocking()) {
          hash = (37 * hash) + LOCKING_FIELD_NUMBER;
          hash = (53 * hash) + locking_;
        }
        if (hasLockingOptions()) {
          hash = (37 * hash) + LOCKING_OPTIONS_FIELD_NUMBER;
          hash = (53 * hash) + lockingOptions_;
        }
        if (hasLimitExpr()) {
          hash = (37 * hash) + LIMIT_EXPR_FIELD_NUMBER;
          hash = (53 * hash) + getLimitExpr().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Find prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *Find Documents/Rows in a Collection/Table
       *&#64;startuml
       *client -&gt; server: Find
       *... one or more Resultset ...
       *&#64;enduml
       *&#64;returns &#64;ref Mysqlx::Resultset
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Find}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Find)
          com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Find_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Find_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Find.class, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Find.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getProjectionFieldBuilder();
            getArgsFieldBuilder();
            getCriteriaFieldBuilder();
            getLimitFieldBuilder();
            getOrderFieldBuilder();
            getGroupingFieldBuilder();
            getGroupingCriteriaFieldBuilder();
            getLimitExprFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          dataModel_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (projectionBuilder_ == null) {
            projection_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            projectionBuilder_.clear();
          }
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            argsBuilder_.clear();
          }
          if (criteriaBuilder_ == null) {
            criteria_ = null;
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          if (limitBuilder_ == null) {
            limit_ = null;
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            orderBuilder_.clear();
          }
          if (groupingBuilder_ == null) {
            grouping_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            groupingBuilder_.clear();
          }
          if (groupingCriteriaBuilder_ == null) {
            groupingCriteria_ = null;
          } else {
            groupingCriteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          locking_ = 1;
          bitField0_ = (bitField0_ & ~0x00000200);
          lockingOptions_ = 1;
          bitField0_ = (bitField0_ & ~0x00000400);
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Find_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Find result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Find result = new com.mysql.cj.x.protobuf.MysqlxCrud.Find(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.dataModel_ = dataModel_;
          if (projectionBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              projection_ = java.util.Collections.unmodifiableList(projection_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.projection_ = projection_;
          } else {
            result.projection_ = projectionBuilder_.build();
          }
          if (argsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              args_ = java.util.Collections.unmodifiableList(args_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.args_ = args_;
          } else {
            result.args_ = argsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) != 0)) {
            if (criteriaBuilder_ == null) {
              result.criteria_ = criteria_;
            } else {
              result.criteria_ = criteriaBuilder_.build();
            }
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            if (limitBuilder_ == null) {
              result.limit_ = limit_;
            } else {
              result.limit_ = limitBuilder_.build();
            }
            to_bitField0_ |= 0x00000008;
          }
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0)) {
              order_ = java.util.Collections.unmodifiableList(order_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          if (groupingBuilder_ == null) {
            if (((bitField0_ & 0x00000080) != 0)) {
              grouping_ = java.util.Collections.unmodifiableList(grouping_);
              bitField0_ = (bitField0_ & ~0x00000080);
            }
            result.grouping_ = grouping_;
          } else {
            result.grouping_ = groupingBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000100) != 0)) {
            if (groupingCriteriaBuilder_ == null) {
              result.groupingCriteria_ = groupingCriteria_;
            } else {
              result.groupingCriteria_ = groupingCriteriaBuilder_.build();
            }
            to_bitField0_ |= 0x00000010;
          }
          if (((from_bitField0_ & 0x00000200) != 0)) {
            to_bitField0_ |= 0x00000020;
          }
          result.locking_ = locking_;
          if (((from_bitField0_ & 0x00000400) != 0)) {
            to_bitField0_ |= 0x00000040;
          }
          result.lockingOptions_ = lockingOptions_;
          if (((from_bitField0_ & 0x00000800) != 0)) {
            if (limitExprBuilder_ == null) {
              result.limitExpr_ = limitExpr_;
            } else {
              result.limitExpr_ = limitExprBuilder_.build();
            }
            to_bitField0_ |= 0x00000080;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Find) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Find)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Find other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDataModel()) {
            setDataModel(other.getDataModel());
          }
          if (projectionBuilder_ == null) {
            if (!other.projection_.isEmpty()) {
              if (projection_.isEmpty()) {
                projection_ = other.projection_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureProjectionIsMutable();
                projection_.addAll(other.projection_);
              }
              onChanged();
            }
          } else {
            if (!other.projection_.isEmpty()) {
              if (projectionBuilder_.isEmpty()) {
                projectionBuilder_.dispose();
                projectionBuilder_ = null;
                projection_ = other.projection_;
                bitField0_ = (bitField0_ & ~0x00000004);
                projectionBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getProjectionFieldBuilder() : null;
              } else {
                projectionBuilder_.addAllMessages(other.projection_);
              }
            }
          }
          if (argsBuilder_ == null) {
            if (!other.args_.isEmpty()) {
              if (args_.isEmpty()) {
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureArgsIsMutable();
                args_.addAll(other.args_);
              }
              onChanged();
            }
          } else {
            if (!other.args_.isEmpty()) {
              if (argsBuilder_.isEmpty()) {
                argsBuilder_.dispose();
                argsBuilder_ = null;
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000008);
                argsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getArgsFieldBuilder() : null;
              } else {
                argsBuilder_.addAllMessages(other.args_);
              }
            }
          }
          if (other.hasCriteria()) {
            mergeCriteria(other.getCriteria());
          }
          if (other.hasLimit()) {
            mergeLimit(other.getLimit());
          }
          if (orderBuilder_ == null) {
            if (!other.order_.isEmpty()) {
              if (order_.isEmpty()) {
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureOrderIsMutable();
                order_.addAll(other.order_);
              }
              onChanged();
            }
          } else {
            if (!other.order_.isEmpty()) {
              if (orderBuilder_.isEmpty()) {
                orderBuilder_.dispose();
                orderBuilder_ = null;
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000040);
                orderBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getOrderFieldBuilder() : null;
              } else {
                orderBuilder_.addAllMessages(other.order_);
              }
            }
          }
          if (groupingBuilder_ == null) {
            if (!other.grouping_.isEmpty()) {
              if (grouping_.isEmpty()) {
                grouping_ = other.grouping_;
                bitField0_ = (bitField0_ & ~0x00000080);
              } else {
                ensureGroupingIsMutable();
                grouping_.addAll(other.grouping_);
              }
              onChanged();
            }
          } else {
            if (!other.grouping_.isEmpty()) {
              if (groupingBuilder_.isEmpty()) {
                groupingBuilder_.dispose();
                groupingBuilder_ = null;
                grouping_ = other.grouping_;
                bitField0_ = (bitField0_ & ~0x00000080);
                groupingBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGroupingFieldBuilder() : null;
              } else {
                groupingBuilder_.addAllMessages(other.grouping_);
              }
            }
          }
          if (other.hasGroupingCriteria()) {
            mergeGroupingCriteria(other.getGroupingCriteria());
          }
          if (other.hasLocking()) {
            setLocking(other.getLocking());
          }
          if (other.hasLockingOptions()) {
            setLockingOptions(other.getLockingOptions());
          }
          if (other.hasLimitExpr()) {
            mergeLimitExpr(other.getLimitExpr());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          for (int i = 0; i < getProjectionCount(); i++) {
            if (!getProjection(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getArgsCount(); i++) {
            if (!getArgs(i).isInitialized()) {
              return false;
            }
          }
          if (hasCriteria()) {
            if (!getCriteria().isInitialized()) {
              return false;
            }
          }
          if (hasLimit()) {
            if (!getLimit().isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getOrderCount(); i++) {
            if (!getOrder(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getGroupingCount(); i++) {
            if (!getGrouping(i).isInitialized()) {
              return false;
            }
          }
          if (hasGroupingCriteria()) {
            if (!getGroupingCriteria().isInitialized()) {
              return false;
            }
          }
          if (hasLimitExpr()) {
            if (!getLimitExpr().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Find parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Find) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** collection in which to find 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private int dataModel_ = 1;
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return Whether the dataModel field is set.
         */
        @java.lang.Override public boolean hasDataModel() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return The dataModel.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @param value The dataModel to set.
         * @return This builder for chaining.
         */
        public Builder setDataModel(com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          dataModel_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearDataModel() {
          bitField0_ = (bitField0_ & ~0x00000002);
          dataModel_ = 1;
          onChanged();
          return this;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection> projection_ =
          java.util.Collections.emptyList();
        private void ensureProjectionIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            projection_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Projection>(projection_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Projection, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder> projectionBuilder_;
  
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection> getProjectionList() {
          if (projectionBuilder_ == null) {
            return java.util.Collections.unmodifiableList(projection_);
          } else {
            return projectionBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public int getProjectionCount() {
          if (projectionBuilder_ == null) {
            return projection_.size();
          } else {
            return projectionBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection getProjection(int index) {
          if (projectionBuilder_ == null) {
            return projection_.get(index);
          } else {
            return projectionBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder setProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Projection value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.set(index, value);
            onChanged();
          } else {
            projectionBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder setProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.set(index, builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder addProjection(com.mysql.cj.x.protobuf.MysqlxCrud.Projection value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.add(value);
            onChanged();
          } else {
            projectionBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder addProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Projection value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.add(index, value);
            onChanged();
          } else {
            projectionBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder addProjection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.add(builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder addProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.add(index, builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder addAllProjection(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Projection> values) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, projection_);
            onChanged();
          } else {
            projectionBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder clearProjection() {
          if (projectionBuilder_ == null) {
            projection_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            projectionBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public Builder removeProjection(int index) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.remove(index);
            onChanged();
          } else {
            projectionBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder getProjectionBuilder(
            int index) {
          return getProjectionFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder getProjectionOrBuilder(
            int index) {
          if (projectionBuilder_ == null) {
            return projection_.get(index);  } else {
            return projectionBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder> 
             getProjectionOrBuilderList() {
          if (projectionBuilder_ != null) {
            return projectionBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(projection_);
          }
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder addProjectionBuilder() {
          return getProjectionFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Projection.getDefaultInstance());
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder addProjectionBuilder(
            int index) {
          return getProjectionFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.getDefaultInstance());
        }
        /**
         * <pre>
         ** list of column projections that shall be returned 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Projection projection = 4;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder> 
             getProjectionBuilderList() {
          return getProjectionFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Projection, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder> 
            getProjectionFieldBuilder() {
          if (projectionBuilder_ == null) {
            projectionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Projection, com.mysql.cj.x.protobuf.MysqlxCrud.Projection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ProjectionOrBuilder>(
                    projection_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            projection_ = null;
          }
          return projectionBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_ =
          java.util.Collections.emptyList();
        private void ensureArgsIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>(args_);
            bitField0_ |= 0x00000008;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> argsBuilder_;
  
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
          if (argsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(args_);
          } else {
            return argsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public int getArgsCount() {
          if (argsBuilder_ == null) {
            return args_.size();
          } else {
            return argsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);
          } else {
            return argsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.set(index, value);
            onChanged();
          } else {
            argsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.set(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder addArgs(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
          } else {
            argsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(index, value);
            onChanged();
          } else {
            argsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder addArgs(
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder addAllArgs(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> values) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, args_);
            onChanged();
          } else {
            argsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder clearArgs() {
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            argsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public Builder removeArgs(int index) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.remove(index);
            onChanged();
          } else {
            argsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder getArgsBuilder(
            int index) {
          return getArgsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
            int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);  } else {
            return argsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
             getArgsOrBuilderList() {
          if (argsBuilder_ != null) {
            return argsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(args_);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder() {
          return getArgsFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder(
            int index) {
          return getArgsFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 11;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder> 
             getArgsBuilderList() {
          return getArgsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
            getArgsFieldBuilder() {
          if (argsBuilder_ == null) {
            argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder>(
                    args_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            args_ = null;
          }
          return argsBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> criteriaBuilder_;
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         * @return Whether the criteria field is set.
         */
        public boolean hasCriteria() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         * @return The criteria.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
          if (criteriaBuilder_ == null) {
            return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          } else {
            return criteriaBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public Builder setCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            criteria_ = value;
            onChanged();
          } else {
            criteriaBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public Builder setCriteria(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (criteriaBuilder_ == null) {
            criteria_ = builderForValue.build();
            onChanged();
          } else {
            criteriaBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public Builder mergeCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0) &&
                criteria_ != null &&
                criteria_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              criteria_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(criteria_).mergeFrom(value).buildPartial();
            } else {
              criteria_ = value;
            }
            onChanged();
          } else {
            criteriaBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public Builder clearCriteria() {
          if (criteriaBuilder_ == null) {
            criteria_ = null;
            onChanged();
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getCriteriaBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getCriteriaFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
          if (criteriaBuilder_ != null) {
            return criteriaBuilder_.getMessageOrBuilder();
          } else {
            return criteria_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          }
        }
        /**
         * <pre>
         ** filter criteria 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getCriteriaFieldBuilder() {
          if (criteriaBuilder_ == null) {
            criteriaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getCriteria(),
                    getParentForChildren(),
                    isClean());
            criteria_ = null;
          }
          return criteriaBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> limitBuilder_;
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         * @return Whether the limit field is set.
         */
        public boolean hasLimit() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         * @return The limit.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
          if (limitBuilder_ == null) {
            return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          } else {
            return limitBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public Builder setLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limit_ = value;
            onChanged();
          } else {
            limitBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public Builder setLimit(
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder builderForValue) {
          if (limitBuilder_ == null) {
            limit_ = builderForValue.build();
            onChanged();
          } else {
            limitBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public Builder mergeLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0) &&
                limit_ != null &&
                limit_ != com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance()) {
              limit_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.newBuilder(limit_).mergeFrom(value).buildPartial();
            } else {
              limit_ = value;
            }
            onChanged();
          } else {
            limitBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000020;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public Builder clearLimit() {
          if (limitBuilder_ == null) {
            limit_ = null;
            onChanged();
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder getLimitBuilder() {
          bitField0_ |= 0x00000020;
          onChanged();
          return getLimitFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
          if (limitBuilder_ != null) {
            return limitBuilder_.getMessageOrBuilder();
          } else {
            return limit_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          }
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 6;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> 
            getLimitFieldBuilder() {
          if (limitBuilder_ == null) {
            limitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder>(
                    getLimit(),
                    getParentForChildren(),
                    isClean());
            limit_ = null;
          }
          return limitBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_ =
          java.util.Collections.emptyList();
        private void ensureOrderIsMutable() {
          if (!((bitField0_ & 0x00000040) != 0)) {
            order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>(order_);
            bitField0_ |= 0x00000040;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> orderBuilder_;
  
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
          if (orderBuilder_ == null) {
            return java.util.Collections.unmodifiableList(order_);
          } else {
            return orderBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public int getOrderCount() {
          if (orderBuilder_ == null) {
            return order_.size();
          } else {
            return orderBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);
          } else {
            return orderBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.set(index, value);
            onChanged();
          } else {
            orderBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.set(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder addOrder(com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(value);
            onChanged();
          } else {
            orderBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(index, value);
            onChanged();
          } else {
            orderBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder addOrder(
            com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder addAllOrder(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Order> values) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, order_);
            onChanged();
          } else {
            orderBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public Builder removeOrder(int index) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.remove(index);
            onChanged();
          } else {
            orderBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder getOrderBuilder(
            int index) {
          return getOrderFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
            int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);  } else {
            return orderBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
             getOrderOrBuilderList() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(order_);
          }
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder() {
          return getOrderFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder(
            int index) {
          return getOrderFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** sort-order in which the rows/document shall be returned in 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 7;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder> 
             getOrderBuilderList() {
          return getOrderFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder>(
                    order_,
                    ((bitField0_ & 0x00000040) != 0),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> grouping_ =
          java.util.Collections.emptyList();
        private void ensureGroupingIsMutable() {
          if (!((bitField0_ & 0x00000080) != 0)) {
            grouping_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.Expr>(grouping_);
            bitField0_ |= 0x00000080;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> groupingBuilder_;
  
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> getGroupingList() {
          if (groupingBuilder_ == null) {
            return java.util.Collections.unmodifiableList(grouping_);
          } else {
            return groupingBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public int getGroupingCount() {
          if (groupingBuilder_ == null) {
            return grouping_.size();
          } else {
            return groupingBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGrouping(int index) {
          if (groupingBuilder_ == null) {
            return grouping_.get(index);
          } else {
            return groupingBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder setGrouping(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (groupingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupingIsMutable();
            grouping_.set(index, value);
            onChanged();
          } else {
            groupingBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder setGrouping(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (groupingBuilder_ == null) {
            ensureGroupingIsMutable();
            grouping_.set(index, builderForValue.build());
            onChanged();
          } else {
            groupingBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder addGrouping(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (groupingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupingIsMutable();
            grouping_.add(value);
            onChanged();
          } else {
            groupingBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder addGrouping(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (groupingBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupingIsMutable();
            grouping_.add(index, value);
            onChanged();
          } else {
            groupingBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder addGrouping(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (groupingBuilder_ == null) {
            ensureGroupingIsMutable();
            grouping_.add(builderForValue.build());
            onChanged();
          } else {
            groupingBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder addGrouping(
            int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (groupingBuilder_ == null) {
            ensureGroupingIsMutable();
            grouping_.add(index, builderForValue.build());
            onChanged();
          } else {
            groupingBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder addAllGrouping(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxExpr.Expr> values) {
          if (groupingBuilder_ == null) {
            ensureGroupingIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, grouping_);
            onChanged();
          } else {
            groupingBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder clearGrouping() {
          if (groupingBuilder_ == null) {
            grouping_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000080);
            onChanged();
          } else {
            groupingBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public Builder removeGrouping(int index) {
          if (groupingBuilder_ == null) {
            ensureGroupingIsMutable();
            grouping_.remove(index);
            onChanged();
          } else {
            groupingBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getGroupingBuilder(
            int index) {
          return getGroupingFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingOrBuilder(
            int index) {
          if (groupingBuilder_ == null) {
            return grouping_.get(index);  } else {
            return groupingBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
             getGroupingOrBuilderList() {
          if (groupingBuilder_ != null) {
            return groupingBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(grouping_);
          }
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder addGroupingBuilder() {
          return getGroupingFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance());
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder addGroupingBuilder(
            int index) {
          return getGroupingFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance());
        }
        /**
         * <pre>
         ** column expression list for aggregation (GROUP BY) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Expr.Expr grouping = 8;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder> 
             getGroupingBuilderList() {
          return getGroupingFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getGroupingFieldBuilder() {
          if (groupingBuilder_ == null) {
            groupingBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    grouping_,
                    ((bitField0_ & 0x00000080) != 0),
                    getParentForChildren(),
                    isClean());
            grouping_ = null;
          }
          return groupingBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr groupingCriteria_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> groupingCriteriaBuilder_;
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         * @return Whether the groupingCriteria field is set.
         */
        public boolean hasGroupingCriteria() {
          return ((bitField0_ & 0x00000100) != 0);
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         * @return The groupingCriteria.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getGroupingCriteria() {
          if (groupingCriteriaBuilder_ == null) {
            return groupingCriteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : groupingCriteria_;
          } else {
            return groupingCriteriaBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public Builder setGroupingCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (groupingCriteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            groupingCriteria_ = value;
            onChanged();
          } else {
            groupingCriteriaBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public Builder setGroupingCriteria(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (groupingCriteriaBuilder_ == null) {
            groupingCriteria_ = builderForValue.build();
            onChanged();
          } else {
            groupingCriteriaBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public Builder mergeGroupingCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (groupingCriteriaBuilder_ == null) {
            if (((bitField0_ & 0x00000100) != 0) &&
                groupingCriteria_ != null &&
                groupingCriteria_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              groupingCriteria_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(groupingCriteria_).mergeFrom(value).buildPartial();
            } else {
              groupingCriteria_ = value;
            }
            onChanged();
          } else {
            groupingCriteriaBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000100;
          return this;
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public Builder clearGroupingCriteria() {
          if (groupingCriteriaBuilder_ == null) {
            groupingCriteria_ = null;
            onChanged();
          } else {
            groupingCriteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000100);
          return this;
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getGroupingCriteriaBuilder() {
          bitField0_ |= 0x00000100;
          onChanged();
          return getGroupingCriteriaFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getGroupingCriteriaOrBuilder() {
          if (groupingCriteriaBuilder_ != null) {
            return groupingCriteriaBuilder_.getMessageOrBuilder();
          } else {
            return groupingCriteria_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : groupingCriteria_;
          }
        }
        /**
         * <pre>
         ** filter criteria for aggregated groups 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr grouping_criteria = 9;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getGroupingCriteriaFieldBuilder() {
          if (groupingCriteriaBuilder_ == null) {
            groupingCriteriaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getGroupingCriteria(),
                    getParentForChildren(),
                    isClean());
            groupingCriteria_ = null;
          }
          return groupingCriteriaBuilder_;
        }
  
        private int locking_ = 1;
        /**
         * <pre>
         ** perform row locking on matches 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
         * @return Whether the locking field is set.
         */
        @java.lang.Override public boolean hasLocking() {
          return ((bitField0_ & 0x00000200) != 0);
        }
        /**
         * <pre>
         ** perform row locking on matches 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
         * @return The locking.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock getLocking() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock result = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock.valueOf(locking_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock.SHARED_LOCK : result;
        }
        /**
         * <pre>
         ** perform row locking on matches 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
         * @param value The locking to set.
         * @return This builder for chaining.
         */
        public Builder setLocking(com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLock value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000200;
          locking_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** perform row locking on matches 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLock locking = 12;</code>
         * @return This builder for chaining.
         */
        public Builder clearLocking() {
          bitField0_ = (bitField0_ & ~0x00000200);
          locking_ = 1;
          onChanged();
          return this;
        }
  
        private int lockingOptions_ = 1;
        /**
         * <pre>
         ** additional options how to handle locked rows 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
         * @return Whether the lockingOptions field is set.
         */
        @java.lang.Override public boolean hasLockingOptions() {
          return ((bitField0_ & 0x00000400) != 0);
        }
        /**
         * <pre>
         ** additional options how to handle locked rows 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
         * @return The lockingOptions.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions getLockingOptions() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions result = com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions.valueOf(lockingOptions_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions.NOWAIT : result;
        }
        /**
         * <pre>
         ** additional options how to handle locked rows 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
         * @param value The lockingOptions to set.
         * @return This builder for chaining.
         */
        public Builder setLockingOptions(com.mysql.cj.x.protobuf.MysqlxCrud.Find.RowLockOptions value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000400;
          lockingOptions_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** additional options how to handle locked rows 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find.RowLockOptions locking_options = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearLockingOptions() {
          bitField0_ = (bitField0_ & ~0x00000400);
          lockingOptions_ = 1;
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> limitExprBuilder_;
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         * @return Whether the limitExpr field is set.
         */
        public boolean hasLimitExpr() {
          return ((bitField0_ & 0x00000800) != 0);
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         * @return The limitExpr.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
          if (limitExprBuilder_ == null) {
            return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          } else {
            return limitExprBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public Builder setLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limitExpr_ = value;
            onChanged();
          } else {
            limitExprBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public Builder setLimitExpr(
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder builderForValue) {
          if (limitExprBuilder_ == null) {
            limitExpr_ = builderForValue.build();
            onChanged();
          } else {
            limitExprBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public Builder mergeLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (((bitField0_ & 0x00000800) != 0) &&
                limitExpr_ != null &&
                limitExpr_ != com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance()) {
              limitExpr_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.newBuilder(limitExpr_).mergeFrom(value).buildPartial();
            } else {
              limitExpr_ = value;
            }
            onChanged();
          } else {
            limitExprBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public Builder clearLimitExpr() {
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
            onChanged();
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder getLimitExprBuilder() {
          bitField0_ |= 0x00000800;
          onChanged();
          return getLimitExprFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
          if (limitExprBuilder_ != null) {
            return limitExprBuilder_.getMessageOrBuilder();
          } else {
            return limitExpr_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          }
        }
        /**
         * <pre>
         ** numbers of rows that shall be skipped and returned
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 14;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> 
            getLimitExprFieldBuilder() {
          if (limitExprBuilder_ == null) {
            limitExprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder>(
                    getLimitExpr(),
                    getParentForChildren(),
                    isClean());
            limitExpr_ = null;
          }
          return limitExprBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Find)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Find)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Find DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Find();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Find getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Find>
          PARSER = new com.google.protobuf.AbstractParser<Find>() {
        @java.lang.Override
        public Find parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Find(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Find> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Find> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Find getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface InsertOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Insert)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return Whether the dataModel field is set.
       */
      boolean hasDataModel();
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return The dataModel.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel();
  
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column> 
          getProjectionList();
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Column getProjection(int index);
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      int getProjectionCount();
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder> 
          getProjectionOrBuilderList();
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder getProjectionOrBuilder(
          int index);
  
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> 
          getRowList();
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getRow(int index);
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      int getRowCount();
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder> 
          getRowOrBuilderList();
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder getRowOrBuilder(
          int index);
  
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> 
          getArgsList();
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index);
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      int getArgsCount();
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList();
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index);
  
      /**
       * <pre>
       ** true if this should be treated as an Upsert
       *(that is, update on duplicate key) 
       * </pre>
       *
       * <code>optional bool upsert = 6 [default = false];</code>
       * @return Whether the upsert field is set.
       */
      boolean hasUpsert();
      /**
       * <pre>
       ** true if this should be treated as an Upsert
       *(that is, update on duplicate key) 
       * </pre>
       *
       * <code>optional bool upsert = 6 [default = false];</code>
       * @return The upsert.
       */
      boolean getUpsert();
    }
    /**
     * <pre>
     **
     *Insert documents/rows into a collection/table
     *&#64;returns &#64;ref Mysqlx::Resultset
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.Insert}
     */
    public static final class Insert extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Insert)
        InsertOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Insert.newBuilder() to construct.
      private Insert(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Insert() {
        dataModel_ = 1;
        projection_ = java.util.Collections.emptyList();
        row_ = java.util.Collections.emptyList();
        args_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Insert();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Insert(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  dataModel_ = rawValue;
                }
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                  projection_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Column>();
                  mutable_bitField0_ |= 0x00000004;
                }
                projection_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Column.PARSER, extensionRegistry));
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                  row_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow>();
                  mutable_bitField0_ |= 0x00000008;
                }
                row_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.PARSER, extensionRegistry));
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                  args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>();
                  mutable_bitField0_ |= 0x00000010;
                }
                args_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.PARSER, extensionRegistry));
                break;
              }
              case 48: {
                bitField0_ |= 0x00000004;
                upsert_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) != 0)) {
            projection_ = java.util.Collections.unmodifiableList(projection_);
          }
          if (((mutable_bitField0_ & 0x00000008) != 0)) {
            row_ = java.util.Collections.unmodifiableList(row_);
          }
          if (((mutable_bitField0_ & 0x00000010) != 0)) {
            args_ = java.util.Collections.unmodifiableList(args_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Insert.class, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.Builder.class);
      }
  
      public interface TypedRowOrBuilder extends
          // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Insert.TypedRow)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> 
            getFieldList();
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        com.mysql.cj.x.protobuf.MysqlxExpr.Expr getField(int index);
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        int getFieldCount();
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getFieldOrBuilderList();
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getFieldOrBuilder(
            int index);
      }
      /**
       * <pre>
       ** set of fields to insert as a one row 
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Insert.TypedRow}
       */
      public static final class TypedRow extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Insert.TypedRow)
          TypedRowOrBuilder {
      private static final long serialVersionUID = 0L;
        // Use TypedRow.newBuilder() to construct.
        private TypedRow(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private TypedRow() {
          field_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        @SuppressWarnings({"unused"})
        protected java.lang.Object newInstance(
            UnusedPrivateParameter unused) {
          return new TypedRow();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private TypedRow(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                    field_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.Expr>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  field_.add(
                      input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry));
                  break;
                }
                default: {
                  if (!parseUnknownField(
                      input, unknownFields, extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000001) != 0)) {
              field_ = java.util.Collections.unmodifiableList(field_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_TypedRow_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.class, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder.class);
        }
  
        public static final int FIELD_FIELD_NUMBER = 1;
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> field_;
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        @java.lang.Override
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> getFieldList() {
          return field_;
        }
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        @java.lang.Override
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getFieldOrBuilderList() {
          return field_;
        }
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        @java.lang.Override
        public int getFieldCount() {
          return field_.size();
        }
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getField(int index) {
          return field_.get(index);
        }
        /**
         * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getFieldOrBuilder(
            int index) {
          return field_.get(index);
        }
  
        private byte memoizedIsInitialized = -1;
        @java.lang.Override
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          for (int i = 0; i < getFieldCount(); i++) {
            if (!getField(i).isInitialized()) {
              memoizedIsInitialized = 0;
              return false;
            }
          }
          memoizedIsInitialized = 1;
          return true;
        }
  
        @java.lang.Override
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          for (int i = 0; i < field_.size(); i++) {
            output.writeMessage(1, field_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        @java.lang.Override
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          for (int i = 0; i < field_.size(); i++) {
            size += com.google.protobuf.CodedOutputStream
              .computeMessageSize(1, field_.get(i));
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow)) {
            return super.equals(obj);
          }
          com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow other = (com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow) obj;
  
          if (!getFieldList()
              .equals(other.getFieldList())) return false;
          if (!unknownFields.equals(other.unknownFields)) return false;
          return true;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptor().hashCode();
          if (getFieldCount() > 0) {
            hash = (37 * hash) + FIELD_FIELD_NUMBER;
            hash = (53 * hash) + getFieldList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        @java.lang.Override
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        @java.lang.Override
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * <pre>
         ** set of fields to insert as a one row 
         * </pre>
         *
         * Protobuf type {@code Mysqlx.Crud.Insert.TypedRow}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Insert.TypedRow)
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor;
          }
  
          @java.lang.Override
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_TypedRow_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.class, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder.class);
          }
  
          // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
              getFieldFieldBuilder();
            }
          }
          @java.lang.Override
          public Builder clear() {
            super.clear();
            if (fieldBuilder_ == null) {
              field_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              fieldBuilder_.clear();
            }
            return this;
          }
  
          @java.lang.Override
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor;
          }
  
          @java.lang.Override
          public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getDefaultInstanceForType() {
            return com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.getDefaultInstance();
          }
  
          @java.lang.Override
          public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow build() {
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          @java.lang.Override
          public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow buildPartial() {
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow result = new com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow(this);
            int from_bitField0_ = bitField0_;
            if (fieldBuilder_ == null) {
              if (((bitField0_ & 0x00000001) != 0)) {
                field_ = java.util.Collections.unmodifiableList(field_);
                bitField0_ = (bitField0_ & ~0x00000001);
              }
              result.field_ = field_;
            } else {
              result.field_ = fieldBuilder_.build();
            }
            onBuilt();
            return result;
          }
  
          @java.lang.Override
          public Builder clone() {
            return super.clone();
          }
          @java.lang.Override
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.setField(field, value);
          }
          @java.lang.Override
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return super.clearField(field);
          }
          @java.lang.Override
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return super.clearOneof(oneof);
          }
          @java.lang.Override
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, java.lang.Object value) {
            return super.setRepeatedField(field, index, value);
          }
          @java.lang.Override
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              java.lang.Object value) {
            return super.addRepeatedField(field, value);
          }
          @java.lang.Override
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow) {
              return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow other) {
            if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.getDefaultInstance()) return this;
            if (fieldBuilder_ == null) {
              if (!other.field_.isEmpty()) {
                if (field_.isEmpty()) {
                  field_ = other.field_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                } else {
                  ensureFieldIsMutable();
                  field_.addAll(other.field_);
                }
                onChanged();
              }
            } else {
              if (!other.field_.isEmpty()) {
                if (fieldBuilder_.isEmpty()) {
                  fieldBuilder_.dispose();
                  fieldBuilder_ = null;
                  field_ = other.field_;
                  bitField0_ = (bitField0_ & ~0x00000001);
                  fieldBuilder_ = 
                    com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                       getFieldFieldBuilder() : null;
                } else {
                  fieldBuilder_.addAllMessages(other.field_);
                }
              }
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          @java.lang.Override
          public final boolean isInitialized() {
            for (int i = 0; i < getFieldCount(); i++) {
              if (!getField(i).isInitialized()) {
                return false;
              }
            }
            return true;
          }
  
          @java.lang.Override
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> field_ =
            java.util.Collections.emptyList();
          private void ensureFieldIsMutable() {
            if (!((bitField0_ & 0x00000001) != 0)) {
              field_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxExpr.Expr>(field_);
              bitField0_ |= 0x00000001;
             }
          }
  
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> fieldBuilder_;
  
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr> getFieldList() {
            if (fieldBuilder_ == null) {
              return java.util.Collections.unmodifiableList(field_);
            } else {
              return fieldBuilder_.getMessageList();
            }
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public int getFieldCount() {
            if (fieldBuilder_ == null) {
              return field_.size();
            } else {
              return fieldBuilder_.getCount();
            }
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getField(int index) {
            if (fieldBuilder_ == null) {
              return field_.get(index);
            } else {
              return fieldBuilder_.getMessage(index);
            }
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder setField(
              int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
            if (fieldBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureFieldIsMutable();
              field_.set(index, value);
              onChanged();
            } else {
              fieldBuilder_.setMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder setField(
              int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
            if (fieldBuilder_ == null) {
              ensureFieldIsMutable();
              field_.set(index, builderForValue.build());
              onChanged();
            } else {
              fieldBuilder_.setMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder addField(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
            if (fieldBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureFieldIsMutable();
              field_.add(value);
              onChanged();
            } else {
              fieldBuilder_.addMessage(value);
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder addField(
              int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
            if (fieldBuilder_ == null) {
              if (value == null) {
                throw new NullPointerException();
              }
              ensureFieldIsMutable();
              field_.add(index, value);
              onChanged();
            } else {
              fieldBuilder_.addMessage(index, value);
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder addField(
              com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
            if (fieldBuilder_ == null) {
              ensureFieldIsMutable();
              field_.add(builderForValue.build());
              onChanged();
            } else {
              fieldBuilder_.addMessage(builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder addField(
              int index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
            if (fieldBuilder_ == null) {
              ensureFieldIsMutable();
              field_.add(index, builderForValue.build());
              onChanged();
            } else {
              fieldBuilder_.addMessage(index, builderForValue.build());
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder addAllField(
              java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxExpr.Expr> values) {
            if (fieldBuilder_ == null) {
              ensureFieldIsMutable();
              com.google.protobuf.AbstractMessageLite.Builder.addAll(
                  values, field_);
              onChanged();
            } else {
              fieldBuilder_.addAllMessages(values);
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder clearField() {
            if (fieldBuilder_ == null) {
              field_ = java.util.Collections.emptyList();
              bitField0_ = (bitField0_ & ~0x00000001);
              onChanged();
            } else {
              fieldBuilder_.clear();
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public Builder removeField(int index) {
            if (fieldBuilder_ == null) {
              ensureFieldIsMutable();
              field_.remove(index);
              onChanged();
            } else {
              fieldBuilder_.remove(index);
            }
            return this;
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getFieldBuilder(
              int index) {
            return getFieldFieldBuilder().getBuilder(index);
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getFieldOrBuilder(
              int index) {
            if (fieldBuilder_ == null) {
              return field_.get(index);  } else {
              return fieldBuilder_.getMessageOrBuilder(index);
            }
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
               getFieldOrBuilderList() {
            if (fieldBuilder_ != null) {
              return fieldBuilder_.getMessageOrBuilderList();
            } else {
              return java.util.Collections.unmodifiableList(field_);
            }
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder addFieldBuilder() {
            return getFieldFieldBuilder().addBuilder(
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance());
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder addFieldBuilder(
              int index) {
            return getFieldFieldBuilder().addBuilder(
                index, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance());
          }
          /**
           * <code>repeated .Mysqlx.Expr.Expr field = 1;</code>
           */
          public java.util.List<com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder> 
               getFieldBuilderList() {
            return getFieldFieldBuilder().getBuilderList();
          }
          private com.google.protobuf.RepeatedFieldBuilderV3<
              com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
              getFieldFieldBuilder() {
            if (fieldBuilder_ == null) {
              fieldBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                      field_,
                      ((bitField0_ & 0x00000001) != 0),
                      getParentForChildren(),
                      isClean());
              field_ = null;
            }
            return fieldBuilder_;
          }
          @java.lang.Override
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          @java.lang.Override
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Insert.TypedRow)
        }
  
        // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Insert.TypedRow)
        private static final com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow();
        }
  
        public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<TypedRow>
            PARSER = new com.google.protobuf.AbstractParser<TypedRow>() {
          @java.lang.Override
          public TypedRow parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            return new TypedRow(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<TypedRow> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<TypedRow> getParserForType() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** collection to insert into 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DATA_MODEL_FIELD_NUMBER = 2;
      private int dataModel_;
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return Whether the dataModel field is set.
       */
      @java.lang.Override public boolean hasDataModel() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return The dataModel.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
      }
  
      public static final int PROJECTION_FIELD_NUMBER = 3;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column> projection_;
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column> getProjectionList() {
        return projection_;
      }
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder> 
          getProjectionOrBuilderList() {
        return projection_;
      }
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      @java.lang.Override
      public int getProjectionCount() {
        return projection_.size();
      }
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Column getProjection(int index) {
        return projection_.get(index);
      }
      /**
       * <pre>
       ** name of the columns to insert data into
       *(empty if data_model is DOCUMENT) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder getProjectionOrBuilder(
          int index) {
        return projection_.get(index);
      }
  
      public static final int ROW_FIELD_NUMBER = 4;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> row_;
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> getRowList() {
        return row_;
      }
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder> 
          getRowOrBuilderList() {
        return row_;
      }
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      @java.lang.Override
      public int getRowCount() {
        return row_.size();
      }
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getRow(int index) {
        return row_.get(index);
      }
      /**
       * <pre>
       ** set of rows to insert into the collection/table (a single expression
       *with a JSON document literal or an OBJECT expression) 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder getRowOrBuilder(
          int index) {
        return row_.get(index);
      }
  
      public static final int ARGS_FIELD_NUMBER = 5;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_;
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      @java.lang.Override
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       ** values for parameters used in row expressions 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index) {
        return args_.get(index);
      }
  
      public static final int UPSERT_FIELD_NUMBER = 6;
      private boolean upsert_;
      /**
       * <pre>
       ** true if this should be treated as an Upsert
       *(that is, update on duplicate key) 
       * </pre>
       *
       * <code>optional bool upsert = 6 [default = false];</code>
       * @return Whether the upsert field is set.
       */
      @java.lang.Override
      public boolean hasUpsert() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** true if this should be treated as an Upsert
       *(that is, update on duplicate key) 
       * </pre>
       *
       * <code>optional bool upsert = 6 [default = false];</code>
       * @return The upsert.
       */
      @java.lang.Override
      public boolean getUpsert() {
        return upsert_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getProjectionCount(); i++) {
          if (!getProjection(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getRowCount(); i++) {
          if (!getRow(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getArgsCount(); i++) {
          if (!getArgs(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(2, dataModel_);
        }
        for (int i = 0; i < projection_.size(); i++) {
          output.writeMessage(3, projection_.get(i));
        }
        for (int i = 0; i < row_.size(); i++) {
          output.writeMessage(4, row_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          output.writeMessage(5, args_.get(i));
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeBool(6, upsert_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, dataModel_);
        }
        for (int i = 0; i < projection_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, projection_.get(i));
        }
        for (int i = 0; i < row_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, row_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, args_.get(i));
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, upsert_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Insert)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Insert other = (com.mysql.cj.x.protobuf.MysqlxCrud.Insert) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDataModel() != other.hasDataModel()) return false;
        if (hasDataModel()) {
          if (dataModel_ != other.dataModel_) return false;
        }
        if (!getProjectionList()
            .equals(other.getProjectionList())) return false;
        if (!getRowList()
            .equals(other.getRowList())) return false;
        if (!getArgsList()
            .equals(other.getArgsList())) return false;
        if (hasUpsert() != other.hasUpsert()) return false;
        if (hasUpsert()) {
          if (getUpsert()
              != other.getUpsert()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDataModel()) {
          hash = (37 * hash) + DATA_MODEL_FIELD_NUMBER;
          hash = (53 * hash) + dataModel_;
        }
        if (getProjectionCount() > 0) {
          hash = (37 * hash) + PROJECTION_FIELD_NUMBER;
          hash = (53 * hash) + getProjectionList().hashCode();
        }
        if (getRowCount() > 0) {
          hash = (37 * hash) + ROW_FIELD_NUMBER;
          hash = (53 * hash) + getRowList().hashCode();
        }
        if (getArgsCount() > 0) {
          hash = (37 * hash) + ARGS_FIELD_NUMBER;
          hash = (53 * hash) + getArgsList().hashCode();
        }
        if (hasUpsert()) {
          hash = (37 * hash) + UPSERT_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getUpsert());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Insert prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *Insert documents/rows into a collection/table
       *&#64;returns &#64;ref Mysqlx::Resultset
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Insert}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Insert)
          com.mysql.cj.x.protobuf.MysqlxCrud.InsertOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Insert.class, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Insert.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getProjectionFieldBuilder();
            getRowFieldBuilder();
            getArgsFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          dataModel_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (projectionBuilder_ == null) {
            projection_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            projectionBuilder_.clear();
          }
          if (rowBuilder_ == null) {
            row_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            rowBuilder_.clear();
          }
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            argsBuilder_.clear();
          }
          upsert_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Insert_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Insert.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Insert result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Insert result = new com.mysql.cj.x.protobuf.MysqlxCrud.Insert(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.dataModel_ = dataModel_;
          if (projectionBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0)) {
              projection_ = java.util.Collections.unmodifiableList(projection_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.projection_ = projection_;
          } else {
            result.projection_ = projectionBuilder_.build();
          }
          if (rowBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0)) {
              row_ = java.util.Collections.unmodifiableList(row_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.row_ = row_;
          } else {
            result.row_ = rowBuilder_.build();
          }
          if (argsBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0)) {
              args_ = java.util.Collections.unmodifiableList(args_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.args_ = args_;
          } else {
            result.args_ = argsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) != 0)) {
            result.upsert_ = upsert_;
            to_bitField0_ |= 0x00000004;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Insert) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Insert)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Insert other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Insert.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDataModel()) {
            setDataModel(other.getDataModel());
          }
          if (projectionBuilder_ == null) {
            if (!other.projection_.isEmpty()) {
              if (projection_.isEmpty()) {
                projection_ = other.projection_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureProjectionIsMutable();
                projection_.addAll(other.projection_);
              }
              onChanged();
            }
          } else {
            if (!other.projection_.isEmpty()) {
              if (projectionBuilder_.isEmpty()) {
                projectionBuilder_.dispose();
                projectionBuilder_ = null;
                projection_ = other.projection_;
                bitField0_ = (bitField0_ & ~0x00000004);
                projectionBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getProjectionFieldBuilder() : null;
              } else {
                projectionBuilder_.addAllMessages(other.projection_);
              }
            }
          }
          if (rowBuilder_ == null) {
            if (!other.row_.isEmpty()) {
              if (row_.isEmpty()) {
                row_ = other.row_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureRowIsMutable();
                row_.addAll(other.row_);
              }
              onChanged();
            }
          } else {
            if (!other.row_.isEmpty()) {
              if (rowBuilder_.isEmpty()) {
                rowBuilder_.dispose();
                rowBuilder_ = null;
                row_ = other.row_;
                bitField0_ = (bitField0_ & ~0x00000008);
                rowBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getRowFieldBuilder() : null;
              } else {
                rowBuilder_.addAllMessages(other.row_);
              }
            }
          }
          if (argsBuilder_ == null) {
            if (!other.args_.isEmpty()) {
              if (args_.isEmpty()) {
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureArgsIsMutable();
                args_.addAll(other.args_);
              }
              onChanged();
            }
          } else {
            if (!other.args_.isEmpty()) {
              if (argsBuilder_.isEmpty()) {
                argsBuilder_.dispose();
                argsBuilder_ = null;
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000010);
                argsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getArgsFieldBuilder() : null;
              } else {
                argsBuilder_.addAllMessages(other.args_);
              }
            }
          }
          if (other.hasUpsert()) {
            setUpsert(other.getUpsert());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          for (int i = 0; i < getProjectionCount(); i++) {
            if (!getProjection(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getRowCount(); i++) {
            if (!getRow(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getArgsCount(); i++) {
            if (!getArgs(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Insert parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Insert) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** collection to insert into 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private int dataModel_ = 1;
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return Whether the dataModel field is set.
         */
        @java.lang.Override public boolean hasDataModel() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return The dataModel.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @param value The dataModel to set.
         * @return This builder for chaining.
         */
        public Builder setDataModel(com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          dataModel_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearDataModel() {
          bitField0_ = (bitField0_ & ~0x00000002);
          dataModel_ = 1;
          onChanged();
          return this;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column> projection_ =
          java.util.Collections.emptyList();
        private void ensureProjectionIsMutable() {
          if (!((bitField0_ & 0x00000004) != 0)) {
            projection_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Column>(projection_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Column, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder> projectionBuilder_;
  
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column> getProjectionList() {
          if (projectionBuilder_ == null) {
            return java.util.Collections.unmodifiableList(projection_);
          } else {
            return projectionBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public int getProjectionCount() {
          if (projectionBuilder_ == null) {
            return projection_.size();
          } else {
            return projectionBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column getProjection(int index) {
          if (projectionBuilder_ == null) {
            return projection_.get(index);
          } else {
            return projectionBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder setProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Column value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.set(index, value);
            onChanged();
          } else {
            projectionBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder setProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.set(index, builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder addProjection(com.mysql.cj.x.protobuf.MysqlxCrud.Column value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.add(value);
            onChanged();
          } else {
            projectionBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder addProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Column value) {
          if (projectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureProjectionIsMutable();
            projection_.add(index, value);
            onChanged();
          } else {
            projectionBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder addProjection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.add(builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder addProjection(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder builderForValue) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.add(index, builderForValue.build());
            onChanged();
          } else {
            projectionBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder addAllProjection(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Column> values) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, projection_);
            onChanged();
          } else {
            projectionBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder clearProjection() {
          if (projectionBuilder_ == null) {
            projection_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            projectionBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public Builder removeProjection(int index) {
          if (projectionBuilder_ == null) {
            ensureProjectionIsMutable();
            projection_.remove(index);
            onChanged();
          } else {
            projectionBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder getProjectionBuilder(
            int index) {
          return getProjectionFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder getProjectionOrBuilder(
            int index) {
          if (projectionBuilder_ == null) {
            return projection_.get(index);  } else {
            return projectionBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder> 
             getProjectionOrBuilderList() {
          if (projectionBuilder_ != null) {
            return projectionBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(projection_);
          }
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder addProjectionBuilder() {
          return getProjectionFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Column.getDefaultInstance());
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder addProjectionBuilder(
            int index) {
          return getProjectionFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Column.getDefaultInstance());
        }
        /**
         * <pre>
         ** name of the columns to insert data into
         *(empty if data_model is DOCUMENT) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Column projection = 3;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder> 
             getProjectionBuilderList() {
          return getProjectionFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Column, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder> 
            getProjectionFieldBuilder() {
          if (projectionBuilder_ == null) {
            projectionBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Column, com.mysql.cj.x.protobuf.MysqlxCrud.Column.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.ColumnOrBuilder>(
                    projection_,
                    ((bitField0_ & 0x00000004) != 0),
                    getParentForChildren(),
                    isClean());
            projection_ = null;
          }
          return projectionBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> row_ =
          java.util.Collections.emptyList();
        private void ensureRowIsMutable() {
          if (!((bitField0_ & 0x00000008) != 0)) {
            row_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow>(row_);
            bitField0_ |= 0x00000008;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder> rowBuilder_;
  
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> getRowList() {
          if (rowBuilder_ == null) {
            return java.util.Collections.unmodifiableList(row_);
          } else {
            return rowBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public int getRowCount() {
          if (rowBuilder_ == null) {
            return row_.size();
          } else {
            return rowBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow getRow(int index) {
          if (rowBuilder_ == null) {
            return row_.get(index);
          } else {
            return rowBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder setRow(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow value) {
          if (rowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRowIsMutable();
            row_.set(index, value);
            onChanged();
          } else {
            rowBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder setRow(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder builderForValue) {
          if (rowBuilder_ == null) {
            ensureRowIsMutable();
            row_.set(index, builderForValue.build());
            onChanged();
          } else {
            rowBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder addRow(com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow value) {
          if (rowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRowIsMutable();
            row_.add(value);
            onChanged();
          } else {
            rowBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder addRow(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow value) {
          if (rowBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureRowIsMutable();
            row_.add(index, value);
            onChanged();
          } else {
            rowBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder addRow(
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder builderForValue) {
          if (rowBuilder_ == null) {
            ensureRowIsMutable();
            row_.add(builderForValue.build());
            onChanged();
          } else {
            rowBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder addRow(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder builderForValue) {
          if (rowBuilder_ == null) {
            ensureRowIsMutable();
            row_.add(index, builderForValue.build());
            onChanged();
          } else {
            rowBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder addAllRow(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow> values) {
          if (rowBuilder_ == null) {
            ensureRowIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, row_);
            onChanged();
          } else {
            rowBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder clearRow() {
          if (rowBuilder_ == null) {
            row_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            rowBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public Builder removeRow(int index) {
          if (rowBuilder_ == null) {
            ensureRowIsMutable();
            row_.remove(index);
            onChanged();
          } else {
            rowBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder getRowBuilder(
            int index) {
          return getRowFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder getRowOrBuilder(
            int index) {
          if (rowBuilder_ == null) {
            return row_.get(index);  } else {
            return rowBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder> 
             getRowOrBuilderList() {
          if (rowBuilder_ != null) {
            return rowBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(row_);
          }
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder addRowBuilder() {
          return getRowFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.getDefaultInstance());
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder addRowBuilder(
            int index) {
          return getRowFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.getDefaultInstance());
        }
        /**
         * <pre>
         ** set of rows to insert into the collection/table (a single expression
         *with a JSON document literal or an OBJECT expression) 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Insert.TypedRow row = 4;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder> 
             getRowBuilderList() {
          return getRowFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder> 
            getRowFieldBuilder() {
          if (rowBuilder_ == null) {
            rowBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRow.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.Insert.TypedRowOrBuilder>(
                    row_,
                    ((bitField0_ & 0x00000008) != 0),
                    getParentForChildren(),
                    isClean());
            row_ = null;
          }
          return rowBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_ =
          java.util.Collections.emptyList();
        private void ensureArgsIsMutable() {
          if (!((bitField0_ & 0x00000010) != 0)) {
            args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>(args_);
            bitField0_ |= 0x00000010;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> argsBuilder_;
  
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
          if (argsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(args_);
          } else {
            return argsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public int getArgsCount() {
          if (argsBuilder_ == null) {
            return args_.size();
          } else {
            return argsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);
          } else {
            return argsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.set(index, value);
            onChanged();
          } else {
            argsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.set(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder addArgs(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
          } else {
            argsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(index, value);
            onChanged();
          } else {
            argsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder addArgs(
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder addAllArgs(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> values) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, args_);
            onChanged();
          } else {
            argsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder clearArgs() {
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            argsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public Builder removeArgs(int index) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.remove(index);
            onChanged();
          } else {
            argsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder getArgsBuilder(
            int index) {
          return getArgsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
            int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);  } else {
            return argsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
             getArgsOrBuilderList() {
          if (argsBuilder_ != null) {
            return argsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(args_);
          }
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder() {
          return getArgsFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder(
            int index) {
          return getArgsFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in row expressions 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 5;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder> 
             getArgsBuilderList() {
          return getArgsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
            getArgsFieldBuilder() {
          if (argsBuilder_ == null) {
            argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder>(
                    args_,
                    ((bitField0_ & 0x00000010) != 0),
                    getParentForChildren(),
                    isClean());
            args_ = null;
          }
          return argsBuilder_;
        }
  
        private boolean upsert_ ;
        /**
         * <pre>
         ** true if this should be treated as an Upsert
         *(that is, update on duplicate key) 
         * </pre>
         *
         * <code>optional bool upsert = 6 [default = false];</code>
         * @return Whether the upsert field is set.
         */
        @java.lang.Override
        public boolean hasUpsert() {
          return ((bitField0_ & 0x00000020) != 0);
        }
        /**
         * <pre>
         ** true if this should be treated as an Upsert
         *(that is, update on duplicate key) 
         * </pre>
         *
         * <code>optional bool upsert = 6 [default = false];</code>
         * @return The upsert.
         */
        @java.lang.Override
        public boolean getUpsert() {
          return upsert_;
        }
        /**
         * <pre>
         ** true if this should be treated as an Upsert
         *(that is, update on duplicate key) 
         * </pre>
         *
         * <code>optional bool upsert = 6 [default = false];</code>
         * @param value The upsert to set.
         * @return This builder for chaining.
         */
        public Builder setUpsert(boolean value) {
          bitField0_ |= 0x00000020;
          upsert_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** true if this should be treated as an Upsert
         *(that is, update on duplicate key) 
         * </pre>
         *
         * <code>optional bool upsert = 6 [default = false];</code>
         * @return This builder for chaining.
         */
        public Builder clearUpsert() {
          bitField0_ = (bitField0_ & ~0x00000020);
          upsert_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Insert)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Insert)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Insert DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Insert();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Insert getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Insert>
          PARSER = new com.google.protobuf.AbstractParser<Insert>() {
        @java.lang.Override
        public Insert parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Insert(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Insert> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Insert> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Insert getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UpdateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Update)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** datamodel that the operations refer to  
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return Whether the dataModel field is set.
       */
      boolean hasDataModel();
      /**
       * <pre>
       ** datamodel that the operations refer to  
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return The dataModel.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel();
  
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       * @return Whether the criteria field is set.
       */
      boolean hasCriteria();
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       * @return The criteria.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria();
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder();
  
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       * @return Whether the limit field is set.
       */
      boolean hasLimit();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       * @return The limit.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder();
  
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> 
          getOrderList();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index);
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      int getOrderCount();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index);
  
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> 
          getOperationList();
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getOperation(int index);
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      int getOperationCount();
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder> 
          getOperationOrBuilderList();
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder getOperationOrBuilder(
          int index);
  
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> 
          getArgsList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index);
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      int getArgsCount();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index);
  
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       * @return Whether the limitExpr field is set.
       */
      boolean hasLimitExpr();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       * @return The limitExpr.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder();
    }
    /**
     * <pre>
     **
     *Update documents/rows in a collection/table
     *&#64;returns &#64;ref Mysqlx::Resultset
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.Update}
     */
    public static final class Update extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Update)
        UpdateOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Update.newBuilder() to construct.
      private Update(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Update() {
        dataModel_ = 1;
        order_ = java.util.Collections.emptyList();
        operation_ = java.util.Collections.emptyList();
        args_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Update();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Update(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 18: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  dataModel_ = rawValue;
                }
                break;
              }
              case 34: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) != 0)) {
                  subBuilder = criteria_.toBuilder();
                }
                criteria_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(criteria_);
                  criteria_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 42: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) != 0)) {
                  subBuilder = limit_.toBuilder();
                }
                limit_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Limit.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limit_);
                  limit_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 50: {
                if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                  order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>();
                  mutable_bitField0_ |= 0x00000010;
                }
                order_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Order.PARSER, extensionRegistry));
                break;
              }
              case 58: {
                if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                  operation_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation>();
                  mutable_bitField0_ |= 0x00000020;
                }
                operation_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.PARSER, extensionRegistry));
                break;
              }
              case 66: {
                if (!((mutable_bitField0_ & 0x00000040) != 0)) {
                  args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>();
                  mutable_bitField0_ |= 0x00000040;
                }
                args_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.PARSER, extensionRegistry));
                break;
              }
              case 74: {
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000010) != 0)) {
                  subBuilder = limitExpr_.toBuilder();
                }
                limitExpr_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limitExpr_);
                  limitExpr_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000010;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000010) != 0)) {
            order_ = java.util.Collections.unmodifiableList(order_);
          }
          if (((mutable_bitField0_ & 0x00000020) != 0)) {
            operation_ = java.util.Collections.unmodifiableList(operation_);
          }
          if (((mutable_bitField0_ & 0x00000040) != 0)) {
            args_ = java.util.Collections.unmodifiableList(args_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Update_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Update_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Update.class, com.mysql.cj.x.protobuf.MysqlxCrud.Update.Builder.class);
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 2;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DATA_MODEL_FIELD_NUMBER = 3;
      private int dataModel_;
      /**
       * <pre>
       ** datamodel that the operations refer to  
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return Whether the dataModel field is set.
       */
      @java.lang.Override public boolean hasDataModel() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** datamodel that the operations refer to  
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
       * @return The dataModel.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
      }
  
      public static final int CRITERIA_FIELD_NUMBER = 4;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       * @return Whether the criteria field is set.
       */
      @java.lang.Override
      public boolean hasCriteria() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       * @return The criteria.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
  
      public static final int LIMIT_FIELD_NUMBER = 5;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       * @return Whether the limit field is set.
       */
      @java.lang.Override
      public boolean hasLimit() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       * @return The limit.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 6;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_;
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
        return order_;
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList() {
        return order_;
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      @java.lang.Override
      public int getOrderCount() {
        return order_.size();
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
        return order_.get(index);
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index) {
        return order_.get(index);
      }
  
      public static final int OPERATION_FIELD_NUMBER = 7;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> operation_;
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> getOperationList() {
        return operation_;
      }
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder> 
          getOperationOrBuilderList() {
        return operation_;
      }
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      @java.lang.Override
      public int getOperationCount() {
        return operation_.size();
      }
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getOperation(int index) {
        return operation_.get(index);
      }
      /**
       * <pre>
       ** list of operations to be applied.
       *Valid operations will depend on the data_model 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder getOperationOrBuilder(
          int index) {
        return operation_.get(index);
      }
  
      public static final int ARGS_FIELD_NUMBER = 8;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_;
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      @java.lang.Override
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index) {
        return args_.get(index);
      }
  
      public static final int LIMIT_EXPR_FIELD_NUMBER = 9;
      private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       * @return Whether the limitExpr field is set.
       */
      @java.lang.Override
      public boolean hasLimitExpr() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       * @return The limitExpr.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasCriteria()) {
          if (!getCriteria().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimit()) {
          if (!getLimit().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getOrderCount(); i++) {
          if (!getOrder(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getOperationCount(); i++) {
          if (!getOperation(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getArgsCount(); i++) {
          if (!getArgs(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimitExpr()) {
          if (!getLimitExpr().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(2, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(3, dataModel_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeMessage(4, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeMessage(5, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          output.writeMessage(6, order_.get(i));
        }
        for (int i = 0; i < operation_.size(); i++) {
          output.writeMessage(7, operation_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          output.writeMessage(8, args_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeMessage(9, getLimitExpr());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, dataModel_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, order_.get(i));
        }
        for (int i = 0; i < operation_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, operation_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(8, args_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(9, getLimitExpr());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Update)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Update other = (com.mysql.cj.x.protobuf.MysqlxCrud.Update) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDataModel() != other.hasDataModel()) return false;
        if (hasDataModel()) {
          if (dataModel_ != other.dataModel_) return false;
        }
        if (hasCriteria() != other.hasCriteria()) return false;
        if (hasCriteria()) {
          if (!getCriteria()
              .equals(other.getCriteria())) return false;
        }
        if (hasLimit() != other.hasLimit()) return false;
        if (hasLimit()) {
          if (!getLimit()
              .equals(other.getLimit())) return false;
        }
        if (!getOrderList()
            .equals(other.getOrderList())) return false;
        if (!getOperationList()
            .equals(other.getOperationList())) return false;
        if (!getArgsList()
            .equals(other.getArgsList())) return false;
        if (hasLimitExpr() != other.hasLimitExpr()) return false;
        if (hasLimitExpr()) {
          if (!getLimitExpr()
              .equals(other.getLimitExpr())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDataModel()) {
          hash = (37 * hash) + DATA_MODEL_FIELD_NUMBER;
          hash = (53 * hash) + dataModel_;
        }
        if (hasCriteria()) {
          hash = (37 * hash) + CRITERIA_FIELD_NUMBER;
          hash = (53 * hash) + getCriteria().hashCode();
        }
        if (hasLimit()) {
          hash = (37 * hash) + LIMIT_FIELD_NUMBER;
          hash = (53 * hash) + getLimit().hashCode();
        }
        if (getOrderCount() > 0) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrderList().hashCode();
        }
        if (getOperationCount() > 0) {
          hash = (37 * hash) + OPERATION_FIELD_NUMBER;
          hash = (53 * hash) + getOperationList().hashCode();
        }
        if (getArgsCount() > 0) {
          hash = (37 * hash) + ARGS_FIELD_NUMBER;
          hash = (53 * hash) + getArgsList().hashCode();
        }
        if (hasLimitExpr()) {
          hash = (37 * hash) + LIMIT_EXPR_FIELD_NUMBER;
          hash = (53 * hash) + getLimitExpr().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Update prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *Update documents/rows in a collection/table
       *&#64;returns &#64;ref Mysqlx::Resultset
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Update}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Update)
          com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Update_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Update_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Update.class, com.mysql.cj.x.protobuf.MysqlxCrud.Update.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Update.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getCriteriaFieldBuilder();
            getLimitFieldBuilder();
            getOrderFieldBuilder();
            getOperationFieldBuilder();
            getArgsFieldBuilder();
            getLimitExprFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          dataModel_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (criteriaBuilder_ == null) {
            criteria_ = null;
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (limitBuilder_ == null) {
            limit_ = null;
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            orderBuilder_.clear();
          }
          if (operationBuilder_ == null) {
            operation_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            operationBuilder_.clear();
          }
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            argsBuilder_.clear();
          }
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Update_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Update getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Update.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Update build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Update result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Update buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Update result = new com.mysql.cj.x.protobuf.MysqlxCrud.Update(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.dataModel_ = dataModel_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            if (criteriaBuilder_ == null) {
              result.criteria_ = criteria_;
            } else {
              result.criteria_ = criteriaBuilder_.build();
            }
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            if (limitBuilder_ == null) {
              result.limit_ = limit_;
            } else {
              result.limit_ = limitBuilder_.build();
            }
            to_bitField0_ |= 0x00000008;
          }
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0)) {
              order_ = java.util.Collections.unmodifiableList(order_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          if (operationBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0)) {
              operation_ = java.util.Collections.unmodifiableList(operation_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.operation_ = operation_;
          } else {
            result.operation_ = operationBuilder_.build();
          }
          if (argsBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0)) {
              args_ = java.util.Collections.unmodifiableList(args_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.args_ = args_;
          } else {
            result.args_ = argsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            if (limitExprBuilder_ == null) {
              result.limitExpr_ = limitExpr_;
            } else {
              result.limitExpr_ = limitExprBuilder_.build();
            }
            to_bitField0_ |= 0x00000010;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Update) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Update)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Update other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Update.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDataModel()) {
            setDataModel(other.getDataModel());
          }
          if (other.hasCriteria()) {
            mergeCriteria(other.getCriteria());
          }
          if (other.hasLimit()) {
            mergeLimit(other.getLimit());
          }
          if (orderBuilder_ == null) {
            if (!other.order_.isEmpty()) {
              if (order_.isEmpty()) {
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureOrderIsMutable();
                order_.addAll(other.order_);
              }
              onChanged();
            }
          } else {
            if (!other.order_.isEmpty()) {
              if (orderBuilder_.isEmpty()) {
                orderBuilder_.dispose();
                orderBuilder_ = null;
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000010);
                orderBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getOrderFieldBuilder() : null;
              } else {
                orderBuilder_.addAllMessages(other.order_);
              }
            }
          }
          if (operationBuilder_ == null) {
            if (!other.operation_.isEmpty()) {
              if (operation_.isEmpty()) {
                operation_ = other.operation_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureOperationIsMutable();
                operation_.addAll(other.operation_);
              }
              onChanged();
            }
          } else {
            if (!other.operation_.isEmpty()) {
              if (operationBuilder_.isEmpty()) {
                operationBuilder_.dispose();
                operationBuilder_ = null;
                operation_ = other.operation_;
                bitField0_ = (bitField0_ & ~0x00000020);
                operationBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getOperationFieldBuilder() : null;
              } else {
                operationBuilder_.addAllMessages(other.operation_);
              }
            }
          }
          if (argsBuilder_ == null) {
            if (!other.args_.isEmpty()) {
              if (args_.isEmpty()) {
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureArgsIsMutable();
                args_.addAll(other.args_);
              }
              onChanged();
            }
          } else {
            if (!other.args_.isEmpty()) {
              if (argsBuilder_.isEmpty()) {
                argsBuilder_.dispose();
                argsBuilder_ = null;
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000040);
                argsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getArgsFieldBuilder() : null;
              } else {
                argsBuilder_.addAllMessages(other.args_);
              }
            }
          }
          if (other.hasLimitExpr()) {
            mergeLimitExpr(other.getLimitExpr());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          if (hasCriteria()) {
            if (!getCriteria().isInitialized()) {
              return false;
            }
          }
          if (hasLimit()) {
            if (!getLimit().isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getOrderCount(); i++) {
            if (!getOrder(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getOperationCount(); i++) {
            if (!getOperation(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getArgsCount(); i++) {
            if (!getArgs(i).isInitialized()) {
              return false;
            }
          }
          if (hasLimitExpr()) {
            if (!getLimitExpr().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Update parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Update) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private int dataModel_ = 1;
        /**
         * <pre>
         ** datamodel that the operations refer to  
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return Whether the dataModel field is set.
         */
        @java.lang.Override public boolean hasDataModel() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** datamodel that the operations refer to  
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return The dataModel.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
        }
        /**
         * <pre>
         ** datamodel that the operations refer to  
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @param value The dataModel to set.
         * @return This builder for chaining.
         */
        public Builder setDataModel(com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          dataModel_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** datamodel that the operations refer to  
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearDataModel() {
          bitField0_ = (bitField0_ & ~0x00000002);
          dataModel_ = 1;
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> criteriaBuilder_;
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         * @return Whether the criteria field is set.
         */
        public boolean hasCriteria() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         * @return The criteria.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
          if (criteriaBuilder_ == null) {
            return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          } else {
            return criteriaBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public Builder setCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            criteria_ = value;
            onChanged();
          } else {
            criteriaBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public Builder setCriteria(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (criteriaBuilder_ == null) {
            criteria_ = builderForValue.build();
            onChanged();
          } else {
            criteriaBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public Builder mergeCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
                criteria_ != null &&
                criteria_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              criteria_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(criteria_).mergeFrom(value).buildPartial();
            } else {
              criteria_ = value;
            }
            onChanged();
          } else {
            criteriaBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public Builder clearCriteria() {
          if (criteriaBuilder_ == null) {
            criteria_ = null;
            onChanged();
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getCriteriaBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getCriteriaFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
          if (criteriaBuilder_ != null) {
            return criteriaBuilder_.getMessageOrBuilder();
          } else {
            return criteria_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          }
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getCriteriaFieldBuilder() {
          if (criteriaBuilder_ == null) {
            criteriaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getCriteria(),
                    getParentForChildren(),
                    isClean());
            criteria_ = null;
          }
          return criteriaBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> limitBuilder_;
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         * @return Whether the limit field is set.
         */
        public boolean hasLimit() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         * @return The limit.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
          if (limitBuilder_ == null) {
            return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          } else {
            return limitBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public Builder setLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limit_ = value;
            onChanged();
          } else {
            limitBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public Builder setLimit(
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder builderForValue) {
          if (limitBuilder_ == null) {
            limit_ = builderForValue.build();
            onChanged();
          } else {
            limitBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public Builder mergeLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0) &&
                limit_ != null &&
                limit_ != com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance()) {
              limit_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.newBuilder(limit_).mergeFrom(value).buildPartial();
            } else {
              limit_ = value;
            }
            onChanged();
          } else {
            limitBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public Builder clearLimit() {
          if (limitBuilder_ == null) {
            limit_ = null;
            onChanged();
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder getLimitBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getLimitFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
          if (limitBuilder_ != null) {
            return limitBuilder_.getMessageOrBuilder();
          } else {
            return limit_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> 
            getLimitFieldBuilder() {
          if (limitBuilder_ == null) {
            limitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder>(
                    getLimit(),
                    getParentForChildren(),
                    isClean());
            limit_ = null;
          }
          return limitBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_ =
          java.util.Collections.emptyList();
        private void ensureOrderIsMutable() {
          if (!((bitField0_ & 0x00000010) != 0)) {
            order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>(order_);
            bitField0_ |= 0x00000010;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> orderBuilder_;
  
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
          if (orderBuilder_ == null) {
            return java.util.Collections.unmodifiableList(order_);
          } else {
            return orderBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public int getOrderCount() {
          if (orderBuilder_ == null) {
            return order_.size();
          } else {
            return orderBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);
          } else {
            return orderBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.set(index, value);
            onChanged();
          } else {
            orderBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.set(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder addOrder(com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(value);
            onChanged();
          } else {
            orderBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(index, value);
            onChanged();
          } else {
            orderBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder addOrder(
            com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder addAllOrder(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Order> values) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, order_);
            onChanged();
          } else {
            orderBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public Builder removeOrder(int index) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.remove(index);
            onChanged();
          } else {
            orderBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder getOrderBuilder(
            int index) {
          return getOrderFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
            int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);  } else {
            return orderBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
             getOrderOrBuilderList() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(order_);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder() {
          return getOrderFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder(
            int index) {
          return getOrderFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 6;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder> 
             getOrderBuilderList() {
          return getOrderFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder>(
                    order_,
                    ((bitField0_ & 0x00000010) != 0),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> operation_ =
          java.util.Collections.emptyList();
        private void ensureOperationIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            operation_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation>(operation_);
            bitField0_ |= 0x00000020;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder> operationBuilder_;
  
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> getOperationList() {
          if (operationBuilder_ == null) {
            return java.util.Collections.unmodifiableList(operation_);
          } else {
            return operationBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public int getOperationCount() {
          if (operationBuilder_ == null) {
            return operation_.size();
          } else {
            return operationBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation getOperation(int index) {
          if (operationBuilder_ == null) {
            return operation_.get(index);
          } else {
            return operationBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder setOperation(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation value) {
          if (operationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOperationIsMutable();
            operation_.set(index, value);
            onChanged();
          } else {
            operationBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder setOperation(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder builderForValue) {
          if (operationBuilder_ == null) {
            ensureOperationIsMutable();
            operation_.set(index, builderForValue.build());
            onChanged();
          } else {
            operationBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder addOperation(com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation value) {
          if (operationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOperationIsMutable();
            operation_.add(value);
            onChanged();
          } else {
            operationBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder addOperation(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation value) {
          if (operationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOperationIsMutable();
            operation_.add(index, value);
            onChanged();
          } else {
            operationBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder addOperation(
            com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder builderForValue) {
          if (operationBuilder_ == null) {
            ensureOperationIsMutable();
            operation_.add(builderForValue.build());
            onChanged();
          } else {
            operationBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder addOperation(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder builderForValue) {
          if (operationBuilder_ == null) {
            ensureOperationIsMutable();
            operation_.add(index, builderForValue.build());
            onChanged();
          } else {
            operationBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder addAllOperation(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation> values) {
          if (operationBuilder_ == null) {
            ensureOperationIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, operation_);
            onChanged();
          } else {
            operationBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder clearOperation() {
          if (operationBuilder_ == null) {
            operation_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            operationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public Builder removeOperation(int index) {
          if (operationBuilder_ == null) {
            ensureOperationIsMutable();
            operation_.remove(index);
            onChanged();
          } else {
            operationBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder getOperationBuilder(
            int index) {
          return getOperationFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder getOperationOrBuilder(
            int index) {
          if (operationBuilder_ == null) {
            return operation_.get(index);  } else {
            return operationBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder> 
             getOperationOrBuilderList() {
          if (operationBuilder_ != null) {
            return operationBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(operation_);
          }
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder addOperationBuilder() {
          return getOperationFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.getDefaultInstance());
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder addOperationBuilder(
            int index) {
          return getOperationFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.getDefaultInstance());
        }
        /**
         * <pre>
         ** list of operations to be applied.
         *Valid operations will depend on the data_model 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.UpdateOperation operation = 7;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder> 
             getOperationBuilderList() {
          return getOperationFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder> 
            getOperationFieldBuilder() {
          if (operationBuilder_ == null) {
            operationBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperation.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.UpdateOperationOrBuilder>(
                    operation_,
                    ((bitField0_ & 0x00000020) != 0),
                    getParentForChildren(),
                    isClean());
            operation_ = null;
          }
          return operationBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_ =
          java.util.Collections.emptyList();
        private void ensureArgsIsMutable() {
          if (!((bitField0_ & 0x00000040) != 0)) {
            args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>(args_);
            bitField0_ |= 0x00000040;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> argsBuilder_;
  
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
          if (argsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(args_);
          } else {
            return argsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public int getArgsCount() {
          if (argsBuilder_ == null) {
            return args_.size();
          } else {
            return argsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);
          } else {
            return argsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.set(index, value);
            onChanged();
          } else {
            argsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.set(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder addArgs(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
          } else {
            argsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(index, value);
            onChanged();
          } else {
            argsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder addArgs(
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder addAllArgs(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> values) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, args_);
            onChanged();
          } else {
            argsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder clearArgs() {
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
          } else {
            argsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public Builder removeArgs(int index) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.remove(index);
            onChanged();
          } else {
            argsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder getArgsBuilder(
            int index) {
          return getArgsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
            int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);  } else {
            return argsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
             getArgsOrBuilderList() {
          if (argsBuilder_ != null) {
            return argsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(args_);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder() {
          return getArgsFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder(
            int index) {
          return getArgsFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 8;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder> 
             getArgsBuilderList() {
          return getArgsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
            getArgsFieldBuilder() {
          if (argsBuilder_ == null) {
            argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder>(
                    args_,
                    ((bitField0_ & 0x00000040) != 0),
                    getParentForChildren(),
                    isClean());
            args_ = null;
          }
          return argsBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> limitExprBuilder_;
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         * @return Whether the limitExpr field is set.
         */
        public boolean hasLimitExpr() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         * @return The limitExpr.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
          if (limitExprBuilder_ == null) {
            return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          } else {
            return limitExprBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public Builder setLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limitExpr_ = value;
            onChanged();
          } else {
            limitExprBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public Builder setLimitExpr(
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder builderForValue) {
          if (limitExprBuilder_ == null) {
            limitExpr_ = builderForValue.build();
            onChanged();
          } else {
            limitExprBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public Builder mergeLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (((bitField0_ & 0x00000080) != 0) &&
                limitExpr_ != null &&
                limitExpr_ != com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance()) {
              limitExpr_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.newBuilder(limitExpr_).mergeFrom(value).buildPartial();
            } else {
              limitExpr_ = value;
            }
            onChanged();
          } else {
            limitExprBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000080;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public Builder clearLimitExpr() {
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
            onChanged();
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder getLimitExprBuilder() {
          bitField0_ |= 0x00000080;
          onChanged();
          return getLimitExprFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
          if (limitExprBuilder_ != null) {
            return limitExprBuilder_.getMessageOrBuilder();
          } else {
            return limitExpr_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 9;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> 
            getLimitExprFieldBuilder() {
          if (limitExprBuilder_ == null) {
            limitExprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder>(
                    getLimitExpr(),
                    getParentForChildren(),
                    isClean());
            limitExpr_ = null;
          }
          return limitExprBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Update)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Update)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Update DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Update();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Update getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Update>
          PARSER = new com.google.protobuf.AbstractParser<Update>() {
        @java.lang.Override
        public Update parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Update(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Update> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Update> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Update getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DeleteOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.Delete)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return Whether the dataModel field is set.
       */
      boolean hasDataModel();
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return The dataModel.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel();
  
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       * @return Whether the criteria field is set.
       */
      boolean hasCriteria();
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       * @return The criteria.
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria();
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder();
  
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       * @return Whether the limit field is set.
       */
      boolean hasLimit();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       * @return The limit.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder();
  
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> 
          getOrderList();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index);
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      int getOrderCount();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList();
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index);
  
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> 
          getArgsList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index);
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      int getArgsCount();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList();
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index);
  
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       * @return Whether the limitExpr field is set.
       */
      boolean hasLimitExpr();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       * @return The limitExpr.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr();
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder();
    }
    /**
     * <pre>
     **
     *Delete documents/rows from a Collection/Table
     *&#64;returns &#64;ref Mysqlx::Resultset
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.Delete}
     */
    public static final class Delete extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.Delete)
        DeleteOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Delete.newBuilder() to construct.
      private Delete(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Delete() {
        dataModel_ = 1;
        order_ = java.util.Collections.emptyList();
        args_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Delete();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Delete(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  bitField0_ |= 0x00000002;
                  dataModel_ = rawValue;
                }
                break;
              }
              case 26: {
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) != 0)) {
                  subBuilder = criteria_.toBuilder();
                }
                criteria_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxExpr.Expr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(criteria_);
                  criteria_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 34: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) != 0)) {
                  subBuilder = limit_.toBuilder();
                }
                limit_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Limit.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limit_);
                  limit_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 42: {
                if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                  order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>();
                  mutable_bitField0_ |= 0x00000010;
                }
                order_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Order.PARSER, extensionRegistry));
                break;
              }
              case 50: {
                if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                  args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>();
                  mutable_bitField0_ |= 0x00000020;
                }
                args_.add(
                    input.readMessage(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.PARSER, extensionRegistry));
                break;
              }
              case 58: {
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder subBuilder = null;
                if (((bitField0_ & 0x00000010) != 0)) {
                  subBuilder = limitExpr_.toBuilder();
                }
                limitExpr_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(limitExpr_);
                  limitExpr_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000010;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000010) != 0)) {
            order_ = java.util.Collections.unmodifiableList(order_);
          }
          if (((mutable_bitField0_ & 0x00000020) != 0)) {
            args_ = java.util.Collections.unmodifiableList(args_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Delete_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Delete_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.Delete.class, com.mysql.cj.x.protobuf.MysqlxCrud.Delete.Builder.class);
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** collection to change 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DATA_MODEL_FIELD_NUMBER = 2;
      private int dataModel_;
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return Whether the dataModel field is set.
       */
      @java.lang.Override public boolean hasDataModel() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** data model that the operations refer to 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
       * @return The dataModel.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
      }
  
      public static final int CRITERIA_FIELD_NUMBER = 3;
      private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       * @return Whether the criteria field is set.
       */
      @java.lang.Override
      public boolean hasCriteria() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       * @return The criteria.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
      /**
       * <pre>
       ** filter expression to match rows that the operations will apply on 
       * </pre>
       *
       * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
        return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
      }
  
      public static final int LIMIT_FIELD_NUMBER = 4;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       * @return Whether the limit field is set.
       */
      @java.lang.Override
      public boolean hasLimit() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       * @return The limit.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
        return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
      }
  
      public static final int ORDER_FIELD_NUMBER = 5;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_;
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
        return order_;
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
          getOrderOrBuilderList() {
        return order_;
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      @java.lang.Override
      public int getOrderCount() {
        return order_.size();
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
        return order_.get(index);
      }
      /**
       * <pre>
       ** specifies order of matched rows 
       * </pre>
       *
       * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
          int index) {
        return order_.get(index);
      }
  
      public static final int ARGS_FIELD_NUMBER = 6;
      private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_;
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      @java.lang.Override
      public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      @java.lang.Override
      public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
          getArgsOrBuilderList() {
        return args_;
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      @java.lang.Override
      public int getArgsCount() {
        return args_.size();
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
        return args_.get(index);
      }
      /**
       * <pre>
       ** values for parameters used in filter expression 
       * </pre>
       *
       * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
          int index) {
        return args_.get(index);
      }
  
      public static final int LIMIT_EXPR_FIELD_NUMBER = 7;
      private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       * @return Whether the limitExpr field is set.
       */
      @java.lang.Override
      public boolean hasLimitExpr() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       * @return The limitExpr.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
      /**
       * <pre>
       ** limits the number of rows to match
       *(user can set one of: limit, limit_expr) 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
        return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasCriteria()) {
          if (!getCriteria().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimit()) {
          if (!getLimit().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getOrderCount(); i++) {
          if (!getOrder(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        for (int i = 0; i < getArgsCount(); i++) {
          if (!getArgs(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        if (hasLimitExpr()) {
          if (!getLimitExpr().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeEnum(2, dataModel_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeMessage(3, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeMessage(4, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          output.writeMessage(5, order_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          output.writeMessage(6, args_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeMessage(7, getLimitExpr());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, dataModel_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, getCriteria());
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getLimit());
        }
        for (int i = 0; i < order_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, order_.get(i));
        }
        for (int i = 0; i < args_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(6, args_.get(i));
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, getLimitExpr());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Delete)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.Delete other = (com.mysql.cj.x.protobuf.MysqlxCrud.Delete) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDataModel() != other.hasDataModel()) return false;
        if (hasDataModel()) {
          if (dataModel_ != other.dataModel_) return false;
        }
        if (hasCriteria() != other.hasCriteria()) return false;
        if (hasCriteria()) {
          if (!getCriteria()
              .equals(other.getCriteria())) return false;
        }
        if (hasLimit() != other.hasLimit()) return false;
        if (hasLimit()) {
          if (!getLimit()
              .equals(other.getLimit())) return false;
        }
        if (!getOrderList()
            .equals(other.getOrderList())) return false;
        if (!getArgsList()
            .equals(other.getArgsList())) return false;
        if (hasLimitExpr() != other.hasLimitExpr()) return false;
        if (hasLimitExpr()) {
          if (!getLimitExpr()
              .equals(other.getLimitExpr())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDataModel()) {
          hash = (37 * hash) + DATA_MODEL_FIELD_NUMBER;
          hash = (53 * hash) + dataModel_;
        }
        if (hasCriteria()) {
          hash = (37 * hash) + CRITERIA_FIELD_NUMBER;
          hash = (53 * hash) + getCriteria().hashCode();
        }
        if (hasLimit()) {
          hash = (37 * hash) + LIMIT_FIELD_NUMBER;
          hash = (53 * hash) + getLimit().hashCode();
        }
        if (getOrderCount() > 0) {
          hash = (37 * hash) + ORDER_FIELD_NUMBER;
          hash = (53 * hash) + getOrderList().hashCode();
        }
        if (getArgsCount() > 0) {
          hash = (37 * hash) + ARGS_FIELD_NUMBER;
          hash = (53 * hash) + getArgsList().hashCode();
        }
        if (hasLimitExpr()) {
          hash = (37 * hash) + LIMIT_EXPR_FIELD_NUMBER;
          hash = (53 * hash) + getLimitExpr().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.Delete prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *Delete documents/rows from a Collection/Table
       *&#64;returns &#64;ref Mysqlx::Resultset
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.Delete}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.Delete)
          com.mysql.cj.x.protobuf.MysqlxCrud.DeleteOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Delete_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Delete_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.Delete.class, com.mysql.cj.x.protobuf.MysqlxCrud.Delete.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.Delete.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getCriteriaFieldBuilder();
            getLimitFieldBuilder();
            getOrderFieldBuilder();
            getArgsFieldBuilder();
            getLimitExprFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          dataModel_ = 1;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (criteriaBuilder_ == null) {
            criteria_ = null;
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          if (limitBuilder_ == null) {
            limit_ = null;
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            orderBuilder_.clear();
          }
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            argsBuilder_.clear();
          }
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_Delete_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Delete getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.Delete.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Delete build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Delete result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.Delete buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.Delete result = new com.mysql.cj.x.protobuf.MysqlxCrud.Delete(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.dataModel_ = dataModel_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            if (criteriaBuilder_ == null) {
              result.criteria_ = criteria_;
            } else {
              result.criteria_ = criteriaBuilder_.build();
            }
            to_bitField0_ |= 0x00000004;
          }
          if (((from_bitField0_ & 0x00000008) != 0)) {
            if (limitBuilder_ == null) {
              result.limit_ = limit_;
            } else {
              result.limit_ = limitBuilder_.build();
            }
            to_bitField0_ |= 0x00000008;
          }
          if (orderBuilder_ == null) {
            if (((bitField0_ & 0x00000010) != 0)) {
              order_ = java.util.Collections.unmodifiableList(order_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.order_ = order_;
          } else {
            result.order_ = orderBuilder_.build();
          }
          if (argsBuilder_ == null) {
            if (((bitField0_ & 0x00000020) != 0)) {
              args_ = java.util.Collections.unmodifiableList(args_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.args_ = args_;
          } else {
            result.args_ = argsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000040) != 0)) {
            if (limitExprBuilder_ == null) {
              result.limitExpr_ = limitExpr_;
            } else {
              result.limitExpr_ = limitExprBuilder_.build();
            }
            to_bitField0_ |= 0x00000010;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.Delete) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.Delete)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.Delete other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.Delete.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDataModel()) {
            setDataModel(other.getDataModel());
          }
          if (other.hasCriteria()) {
            mergeCriteria(other.getCriteria());
          }
          if (other.hasLimit()) {
            mergeLimit(other.getLimit());
          }
          if (orderBuilder_ == null) {
            if (!other.order_.isEmpty()) {
              if (order_.isEmpty()) {
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureOrderIsMutable();
                order_.addAll(other.order_);
              }
              onChanged();
            }
          } else {
            if (!other.order_.isEmpty()) {
              if (orderBuilder_.isEmpty()) {
                orderBuilder_.dispose();
                orderBuilder_ = null;
                order_ = other.order_;
                bitField0_ = (bitField0_ & ~0x00000010);
                orderBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getOrderFieldBuilder() : null;
              } else {
                orderBuilder_.addAllMessages(other.order_);
              }
            }
          }
          if (argsBuilder_ == null) {
            if (!other.args_.isEmpty()) {
              if (args_.isEmpty()) {
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureArgsIsMutable();
                args_.addAll(other.args_);
              }
              onChanged();
            }
          } else {
            if (!other.args_.isEmpty()) {
              if (argsBuilder_.isEmpty()) {
                argsBuilder_.dispose();
                argsBuilder_ = null;
                args_ = other.args_;
                bitField0_ = (bitField0_ & ~0x00000020);
                argsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getArgsFieldBuilder() : null;
              } else {
                argsBuilder_.addAllMessages(other.args_);
              }
            }
          }
          if (other.hasLimitExpr()) {
            mergeLimitExpr(other.getLimitExpr());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          if (hasCriteria()) {
            if (!getCriteria().isInitialized()) {
              return false;
            }
          }
          if (hasLimit()) {
            if (!getLimit().isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getOrderCount(); i++) {
            if (!getOrder(i).isInitialized()) {
              return false;
            }
          }
          for (int i = 0; i < getArgsCount(); i++) {
            if (!getArgs(i).isInitialized()) {
              return false;
            }
          }
          if (hasLimitExpr()) {
            if (!getLimitExpr().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.Delete parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.Delete) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** collection to change 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private int dataModel_ = 1;
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return Whether the dataModel field is set.
         */
        @java.lang.Override public boolean hasDataModel() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return The dataModel.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DataModel getDataModel() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.DataModel result = com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.valueOf(dataModel_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.DataModel.DOCUMENT : result;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @param value The dataModel to set.
         * @return This builder for chaining.
         */
        public Builder setDataModel(com.mysql.cj.x.protobuf.MysqlxCrud.DataModel value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000002;
          dataModel_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** data model that the operations refer to 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.DataModel data_model = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearDataModel() {
          bitField0_ = (bitField0_ & ~0x00000002);
          dataModel_ = 1;
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxExpr.Expr criteria_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> criteriaBuilder_;
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         * @return Whether the criteria field is set.
         */
        public boolean hasCriteria() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         * @return The criteria.
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr getCriteria() {
          if (criteriaBuilder_ == null) {
            return criteria_ == null ? com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          } else {
            return criteriaBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public Builder setCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            criteria_ = value;
            onChanged();
          } else {
            criteriaBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public Builder setCriteria(
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder builderForValue) {
          if (criteriaBuilder_ == null) {
            criteria_ = builderForValue.build();
            onChanged();
          } else {
            criteriaBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public Builder mergeCriteria(com.mysql.cj.x.protobuf.MysqlxExpr.Expr value) {
          if (criteriaBuilder_ == null) {
            if (((bitField0_ & 0x00000004) != 0) &&
                criteria_ != null &&
                criteria_ != com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance()) {
              criteria_ =
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.newBuilder(criteria_).mergeFrom(value).buildPartial();
            } else {
              criteria_ = value;
            }
            onChanged();
          } else {
            criteriaBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000004;
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public Builder clearCriteria() {
          if (criteriaBuilder_ == null) {
            criteria_ = null;
            onChanged();
          } else {
            criteriaBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder getCriteriaBuilder() {
          bitField0_ |= 0x00000004;
          onChanged();
          return getCriteriaFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder getCriteriaOrBuilder() {
          if (criteriaBuilder_ != null) {
            return criteriaBuilder_.getMessageOrBuilder();
          } else {
            return criteria_ == null ?
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr.getDefaultInstance() : criteria_;
          }
        }
        /**
         * <pre>
         ** filter expression to match rows that the operations will apply on 
         * </pre>
         *
         * <code>optional .Mysqlx.Expr.Expr criteria = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder> 
            getCriteriaFieldBuilder() {
          if (criteriaBuilder_ == null) {
            criteriaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxExpr.Expr, com.mysql.cj.x.protobuf.MysqlxExpr.Expr.Builder, com.mysql.cj.x.protobuf.MysqlxExpr.ExprOrBuilder>(
                    getCriteria(),
                    getParentForChildren(),
                    isClean());
            criteria_ = null;
          }
          return criteriaBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Limit limit_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> limitBuilder_;
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         * @return Whether the limit field is set.
         */
        public boolean hasLimit() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         * @return The limit.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit getLimit() {
          if (limitBuilder_ == null) {
            return limit_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          } else {
            return limitBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public Builder setLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limit_ = value;
            onChanged();
          } else {
            limitBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public Builder setLimit(
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder builderForValue) {
          if (limitBuilder_ == null) {
            limit_ = builderForValue.build();
            onChanged();
          } else {
            limitBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public Builder mergeLimit(com.mysql.cj.x.protobuf.MysqlxCrud.Limit value) {
          if (limitBuilder_ == null) {
            if (((bitField0_ & 0x00000008) != 0) &&
                limit_ != null &&
                limit_ != com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance()) {
              limit_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.newBuilder(limit_).mergeFrom(value).buildPartial();
            } else {
              limit_ = value;
            }
            onChanged();
          } else {
            limitBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public Builder clearLimit() {
          if (limitBuilder_ == null) {
            limit_ = null;
            onChanged();
          } else {
            limitBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder getLimitBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getLimitFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder getLimitOrBuilder() {
          if (limitBuilder_ != null) {
            return limitBuilder_.getMessageOrBuilder();
          } else {
            return limit_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit.getDefaultInstance() : limit_;
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Limit limit = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder> 
            getLimitFieldBuilder() {
          if (limitBuilder_ == null) {
            limitBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Limit, com.mysql.cj.x.protobuf.MysqlxCrud.Limit.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitOrBuilder>(
                    getLimit(),
                    getParentForChildren(),
                    isClean());
            limit_ = null;
          }
          return limitBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> order_ =
          java.util.Collections.emptyList();
        private void ensureOrderIsMutable() {
          if (!((bitField0_ & 0x00000010) != 0)) {
            order_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxCrud.Order>(order_);
            bitField0_ |= 0x00000010;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> orderBuilder_;
  
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order> getOrderList() {
          if (orderBuilder_ == null) {
            return java.util.Collections.unmodifiableList(order_);
          } else {
            return orderBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public int getOrderCount() {
          if (orderBuilder_ == null) {
            return order_.size();
          } else {
            return orderBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order getOrder(int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);
          } else {
            return orderBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.set(index, value);
            onChanged();
          } else {
            orderBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder setOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.set(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder addOrder(com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(value);
            onChanged();
          } else {
            orderBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order value) {
          if (orderBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureOrderIsMutable();
            order_.add(index, value);
            onChanged();
          } else {
            orderBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder addOrder(
            com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder addOrder(
            int index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder builderForValue) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.add(index, builderForValue.build());
            onChanged();
          } else {
            orderBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder addAllOrder(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxCrud.Order> values) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, order_);
            onChanged();
          } else {
            orderBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder clearOrder() {
          if (orderBuilder_ == null) {
            order_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
          } else {
            orderBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public Builder removeOrder(int index) {
          if (orderBuilder_ == null) {
            ensureOrderIsMutable();
            order_.remove(index);
            onChanged();
          } else {
            orderBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder getOrderBuilder(
            int index) {
          return getOrderFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder getOrderOrBuilder(
            int index) {
          if (orderBuilder_ == null) {
            return order_.get(index);  } else {
            return orderBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
             getOrderOrBuilderList() {
          if (orderBuilder_ != null) {
            return orderBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(order_);
          }
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder() {
          return getOrderFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder addOrderBuilder(
            int index) {
          return getOrderFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxCrud.Order.getDefaultInstance());
        }
        /**
         * <pre>
         ** specifies order of matched rows 
         * </pre>
         *
         * <code>repeated .Mysqlx.Crud.Order order = 5;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder> 
             getOrderBuilderList() {
          return getOrderFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder> 
            getOrderFieldBuilder() {
          if (orderBuilder_ == null) {
            orderBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Order, com.mysql.cj.x.protobuf.MysqlxCrud.Order.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.OrderOrBuilder>(
                    order_,
                    ((bitField0_ & 0x00000010) != 0),
                    getParentForChildren(),
                    isClean());
            order_ = null;
          }
          return orderBuilder_;
        }
  
        private java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> args_ =
          java.util.Collections.emptyList();
        private void ensureArgsIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            args_ = new java.util.ArrayList<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar>(args_);
            bitField0_ |= 0x00000020;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> argsBuilder_;
  
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> getArgsList() {
          if (argsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(args_);
          } else {
            return argsBuilder_.getMessageList();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public int getArgsCount() {
          if (argsBuilder_ == null) {
            return args_.size();
          } else {
            return argsBuilder_.getCount();
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar getArgs(int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);
          } else {
            return argsBuilder_.getMessage(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.set(index, value);
            onChanged();
          } else {
            argsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder setArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.set(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder addArgs(com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(value);
            onChanged();
          } else {
            argsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar value) {
          if (argsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureArgsIsMutable();
            args_.add(index, value);
            onChanged();
          } else {
            argsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder addArgs(
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder addArgs(
            int index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder builderForValue) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.add(index, builderForValue.build());
            onChanged();
          } else {
            argsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder addAllArgs(
            java.lang.Iterable<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar> values) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, args_);
            onChanged();
          } else {
            argsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder clearArgs() {
          if (argsBuilder_ == null) {
            args_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
          } else {
            argsBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public Builder removeArgs(int index) {
          if (argsBuilder_ == null) {
            ensureArgsIsMutable();
            args_.remove(index);
            onChanged();
          } else {
            argsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder getArgsBuilder(
            int index) {
          return getArgsFieldBuilder().getBuilder(index);
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder getArgsOrBuilder(
            int index) {
          if (argsBuilder_ == null) {
            return args_.get(index);  } else {
            return argsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public java.util.List<? extends com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
             getArgsOrBuilderList() {
          if (argsBuilder_ != null) {
            return argsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(args_);
          }
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder() {
          return getArgsFieldBuilder().addBuilder(
              com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder addArgsBuilder(
            int index) {
          return getArgsFieldBuilder().addBuilder(
              index, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.getDefaultInstance());
        }
        /**
         * <pre>
         ** values for parameters used in filter expression 
         * </pre>
         *
         * <code>repeated .Mysqlx.Datatypes.Scalar args = 6;</code>
         */
        public java.util.List<com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder> 
             getArgsBuilderList() {
          return getArgsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder> 
            getArgsFieldBuilder() {
          if (argsBuilder_ == null) {
            argsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar, com.mysql.cj.x.protobuf.MysqlxDatatypes.Scalar.Builder, com.mysql.cj.x.protobuf.MysqlxDatatypes.ScalarOrBuilder>(
                    args_,
                    ((bitField0_ & 0x00000020) != 0),
                    getParentForChildren(),
                    isClean());
            args_ = null;
          }
          return argsBuilder_;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr limitExpr_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> limitExprBuilder_;
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         * @return Whether the limitExpr field is set.
         */
        public boolean hasLimitExpr() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         * @return The limitExpr.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr getLimitExpr() {
          if (limitExprBuilder_ == null) {
            return limitExpr_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          } else {
            return limitExprBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public Builder setLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            limitExpr_ = value;
            onChanged();
          } else {
            limitExprBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public Builder setLimitExpr(
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder builderForValue) {
          if (limitExprBuilder_ == null) {
            limitExpr_ = builderForValue.build();
            onChanged();
          } else {
            limitExprBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public Builder mergeLimitExpr(com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr value) {
          if (limitExprBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0) &&
                limitExpr_ != null &&
                limitExpr_ != com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance()) {
              limitExpr_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.newBuilder(limitExpr_).mergeFrom(value).buildPartial();
            } else {
              limitExpr_ = value;
            }
            onChanged();
          } else {
            limitExprBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public Builder clearLimitExpr() {
          if (limitExprBuilder_ == null) {
            limitExpr_ = null;
            onChanged();
          } else {
            limitExprBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder getLimitExprBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getLimitExprFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder getLimitExprOrBuilder() {
          if (limitExprBuilder_ != null) {
            return limitExprBuilder_.getMessageOrBuilder();
          } else {
            return limitExpr_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.getDefaultInstance() : limitExpr_;
          }
        }
        /**
         * <pre>
         ** limits the number of rows to match
         *(user can set one of: limit, limit_expr) 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.LimitExpr limit_expr = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder> 
            getLimitExprFieldBuilder() {
          if (limitExprBuilder_ == null) {
            limitExprBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExpr.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.LimitExprOrBuilder>(
                    getLimitExpr(),
                    getParentForChildren(),
                    isClean());
            limitExpr_ = null;
          }
          return limitExprBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.Delete)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.Delete)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.Delete DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.Delete();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.Delete getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Delete>
          PARSER = new com.google.protobuf.AbstractParser<Delete>() {
        @java.lang.Override
        public Delete parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new Delete(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Delete> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Delete> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Delete getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CreateViewOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.CreateView)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return Whether the definer field is set.
       */
      boolean hasDefiner();
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The definer.
       */
      java.lang.String getDefiner();
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The bytes for definer.
       */
      com.google.protobuf.ByteString
          getDefinerBytes();
  
      /**
       * <pre>
       ** defines how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
       * @return Whether the algorithm field is set.
       */
      boolean hasAlgorithm();
      /**
       * <pre>
       ** defines how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
       * @return The algorithm.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm();
  
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
       * @return Whether the security field is set.
       */
      boolean hasSecurity();
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
       * @return The security.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity();
  
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return Whether the check field is set.
       */
      boolean hasCheck();
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return The check.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck();
  
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return A list containing the column.
       */
      java.util.List<java.lang.String>
          getColumnList();
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return The count of column.
       */
      int getColumnCount();
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the element to return.
       * @return The column at the given index.
       */
      java.lang.String getColumn(int index);
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the column at the given index.
       */
      com.google.protobuf.ByteString
          getColumnBytes(int index);
  
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       * @return Whether the stmt field is set.
       */
      boolean hasStmt();
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       * @return The stmt.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt();
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder();
  
      /**
       * <pre>
       ** if true then suppress error when created view already exists;
       *just replace it 
       * </pre>
       *
       * <code>optional bool replace_existing = 8 [default = false];</code>
       * @return Whether the replaceExisting field is set.
       */
      boolean hasReplaceExisting();
      /**
       * <pre>
       ** if true then suppress error when created view already exists;
       *just replace it 
       * </pre>
       *
       * <code>optional bool replace_existing = 8 [default = false];</code>
       * @return The replaceExisting.
       */
      boolean getReplaceExisting();
    }
    /**
     * <pre>
     **
     *CreateView create view based on indicated &#64;ref Mysqlx::Crud::Find message
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.CreateView}
     */
    public static final class CreateView extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.CreateView)
        CreateViewOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use CreateView.newBuilder() to construct.
      private CreateView(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CreateView() {
        definer_ = "";
        algorithm_ = 1;
        security_ = 2;
        check_ = 1;
        column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new CreateView();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CreateView(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                definer_ = bs;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  bitField0_ |= 0x00000004;
                  algorithm_ = rawValue;
                }
                break;
              }
              case 32: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(4, rawValue);
                } else {
                  bitField0_ |= 0x00000008;
                  security_ = rawValue;
                }
                break;
              }
              case 40: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  bitField0_ |= 0x00000010;
                  check_ = rawValue;
                }
                break;
              }
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                  column_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000020;
                }
                column_.add(bs);
                break;
              }
              case 58: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder subBuilder = null;
                if (((bitField0_ & 0x00000020) != 0)) {
                  subBuilder = stmt_.toBuilder();
                }
                stmt_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Find.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(stmt_);
                  stmt_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000020;
                break;
              }
              case 64: {
                bitField0_ |= 0x00000040;
                replaceExisting_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000020) != 0)) {
            column_ = column_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_CreateView_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_CreateView_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.class, com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.Builder.class);
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be created 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DEFINER_FIELD_NUMBER = 2;
      private volatile java.lang.Object definer_;
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return Whether the definer field is set.
       */
      @java.lang.Override
      public boolean hasDefiner() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The definer.
       */
      @java.lang.Override
      public java.lang.String getDefiner() {
        java.lang.Object ref = definer_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            definer_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       ** user name of the definer, if the value isn't set then the definer
       *is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The bytes for definer.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDefinerBytes() {
        java.lang.Object ref = definer_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          definer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int ALGORITHM_FIELD_NUMBER = 3;
      private int algorithm_;
      /**
       * <pre>
       ** defines how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
       * @return Whether the algorithm field is set.
       */
      @java.lang.Override public boolean hasAlgorithm() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** defines how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
       * @return The algorithm.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(algorithm_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.UNDEFINED : result;
      }
  
      public static final int SECURITY_FIELD_NUMBER = 4;
      private int security_;
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
       * @return Whether the security field is set.
       */
      @java.lang.Override public boolean hasSecurity() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
       * @return The security.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(security_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.DEFINER : result;
      }
  
      public static final int CHECK_FIELD_NUMBER = 5;
      private int check_;
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return Whether the check field is set.
       */
      @java.lang.Override public boolean hasCheck() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return The check.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(check_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.LOCAL : result;
      }
  
      public static final int COLUMN_FIELD_NUMBER = 6;
      private com.google.protobuf.LazyStringList column_;
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return A list containing the column.
       */
      public com.google.protobuf.ProtocolStringList
          getColumnList() {
        return column_;
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return The count of column.
       */
      public int getColumnCount() {
        return column_.size();
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the element to return.
       * @return The column at the given index.
       */
      public java.lang.String getColumn(int index) {
        return column_.get(index);
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the column at the given index.
       */
      public com.google.protobuf.ByteString
          getColumnBytes(int index) {
        return column_.getByteString(index);
      }
  
      public static final int STMT_FIELD_NUMBER = 7;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Find stmt_;
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       * @return Whether the stmt field is set.
       */
      @java.lang.Override
      public boolean hasStmt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       * @return The stmt.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt() {
        return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
      }
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder() {
        return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
      }
  
      public static final int REPLACE_EXISTING_FIELD_NUMBER = 8;
      private boolean replaceExisting_;
      /**
       * <pre>
       ** if true then suppress error when created view already exists;
       *just replace it 
       * </pre>
       *
       * <code>optional bool replace_existing = 8 [default = false];</code>
       * @return Whether the replaceExisting field is set.
       */
      @java.lang.Override
      public boolean hasReplaceExisting() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * <pre>
       ** if true then suppress error when created view already exists;
       *just replace it 
       * </pre>
       *
       * <code>optional bool replace_existing = 8 [default = false];</code>
       * @return The replaceExisting.
       */
      @java.lang.Override
      public boolean getReplaceExisting() {
        return replaceExisting_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasStmt()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getStmt().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, definer_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeEnum(3, algorithm_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeEnum(4, security_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeEnum(5, check_);
        }
        for (int i = 0; i < column_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, column_.getRaw(i));
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeMessage(7, getStmt());
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          output.writeBool(8, replaceExisting_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, definer_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, algorithm_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, security_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, check_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < column_.size(); i++) {
            dataSize += computeStringSizeNoTag(column_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getColumnList().size();
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, getStmt());
        }
        if (((bitField0_ & 0x00000040) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(8, replaceExisting_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.CreateView)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.CreateView other = (com.mysql.cj.x.protobuf.MysqlxCrud.CreateView) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDefiner() != other.hasDefiner()) return false;
        if (hasDefiner()) {
          if (!getDefiner()
              .equals(other.getDefiner())) return false;
        }
        if (hasAlgorithm() != other.hasAlgorithm()) return false;
        if (hasAlgorithm()) {
          if (algorithm_ != other.algorithm_) return false;
        }
        if (hasSecurity() != other.hasSecurity()) return false;
        if (hasSecurity()) {
          if (security_ != other.security_) return false;
        }
        if (hasCheck() != other.hasCheck()) return false;
        if (hasCheck()) {
          if (check_ != other.check_) return false;
        }
        if (!getColumnList()
            .equals(other.getColumnList())) return false;
        if (hasStmt() != other.hasStmt()) return false;
        if (hasStmt()) {
          if (!getStmt()
              .equals(other.getStmt())) return false;
        }
        if (hasReplaceExisting() != other.hasReplaceExisting()) return false;
        if (hasReplaceExisting()) {
          if (getReplaceExisting()
              != other.getReplaceExisting()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDefiner()) {
          hash = (37 * hash) + DEFINER_FIELD_NUMBER;
          hash = (53 * hash) + getDefiner().hashCode();
        }
        if (hasAlgorithm()) {
          hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
          hash = (53 * hash) + algorithm_;
        }
        if (hasSecurity()) {
          hash = (37 * hash) + SECURITY_FIELD_NUMBER;
          hash = (53 * hash) + security_;
        }
        if (hasCheck()) {
          hash = (37 * hash) + CHECK_FIELD_NUMBER;
          hash = (53 * hash) + check_;
        }
        if (getColumnCount() > 0) {
          hash = (37 * hash) + COLUMN_FIELD_NUMBER;
          hash = (53 * hash) + getColumnList().hashCode();
        }
        if (hasStmt()) {
          hash = (37 * hash) + STMT_FIELD_NUMBER;
          hash = (53 * hash) + getStmt().hashCode();
        }
        if (hasReplaceExisting()) {
          hash = (37 * hash) + REPLACE_EXISTING_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getReplaceExisting());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.CreateView prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *CreateView create view based on indicated &#64;ref Mysqlx::Crud::Find message
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.CreateView}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.CreateView)
          com.mysql.cj.x.protobuf.MysqlxCrud.CreateViewOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_CreateView_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_CreateView_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.class, com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getStmtFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          definer_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          algorithm_ = 1;
          bitField0_ = (bitField0_ & ~0x00000004);
          security_ = 2;
          bitField0_ = (bitField0_ & ~0x00000008);
          check_ = 1;
          bitField0_ = (bitField0_ & ~0x00000010);
          column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          if (stmtBuilder_ == null) {
            stmt_ = null;
          } else {
            stmtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          replaceExisting_ = false;
          bitField0_ = (bitField0_ & ~0x00000080);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_CreateView_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.CreateView getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.CreateView build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.CreateView result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.CreateView buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.CreateView result = new com.mysql.cj.x.protobuf.MysqlxCrud.CreateView(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.definer_ = definer_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.algorithm_ = algorithm_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            to_bitField0_ |= 0x00000008;
          }
          result.security_ = security_;
          if (((from_bitField0_ & 0x00000010) != 0)) {
            to_bitField0_ |= 0x00000010;
          }
          result.check_ = check_;
          if (((bitField0_ & 0x00000020) != 0)) {
            column_ = column_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.column_ = column_;
          if (((from_bitField0_ & 0x00000040) != 0)) {
            if (stmtBuilder_ == null) {
              result.stmt_ = stmt_;
            } else {
              result.stmt_ = stmtBuilder_.build();
            }
            to_bitField0_ |= 0x00000020;
          }
          if (((from_bitField0_ & 0x00000080) != 0)) {
            result.replaceExisting_ = replaceExisting_;
            to_bitField0_ |= 0x00000040;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.CreateView) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.CreateView)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.CreateView other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.CreateView.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDefiner()) {
            bitField0_ |= 0x00000002;
            definer_ = other.definer_;
            onChanged();
          }
          if (other.hasAlgorithm()) {
            setAlgorithm(other.getAlgorithm());
          }
          if (other.hasSecurity()) {
            setSecurity(other.getSecurity());
          }
          if (other.hasCheck()) {
            setCheck(other.getCheck());
          }
          if (!other.column_.isEmpty()) {
            if (column_.isEmpty()) {
              column_ = other.column_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureColumnIsMutable();
              column_.addAll(other.column_);
            }
            onChanged();
          }
          if (other.hasStmt()) {
            mergeStmt(other.getStmt());
          }
          if (other.hasReplaceExisting()) {
            setReplaceExisting(other.getReplaceExisting());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!hasStmt()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          if (!getStmt().isInitialized()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.CreateView parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.CreateView) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be created 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private java.lang.Object definer_ = "";
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return Whether the definer field is set.
         */
        public boolean hasDefiner() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return The definer.
         */
        public java.lang.String getDefiner() {
          java.lang.Object ref = definer_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              definer_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return The bytes for definer.
         */
        public com.google.protobuf.ByteString
            getDefinerBytes() {
          java.lang.Object ref = definer_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            definer_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @param value The definer to set.
         * @return This builder for chaining.
         */
        public Builder setDefiner(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          definer_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearDefiner() {
          bitField0_ = (bitField0_ & ~0x00000002);
          definer_ = getDefaultInstance().getDefiner();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** user name of the definer, if the value isn't set then the definer
         *is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @param value The bytes for definer to set.
         * @return This builder for chaining.
         */
        public Builder setDefinerBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          definer_ = value;
          onChanged();
          return this;
        }
  
        private int algorithm_ = 1;
        /**
         * <pre>
         ** defines how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
         * @return Whether the algorithm field is set.
         */
        @java.lang.Override public boolean hasAlgorithm() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         ** defines how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
         * @return The algorithm.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(algorithm_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.UNDEFINED : result;
        }
        /**
         * <pre>
         ** defines how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
         * @param value The algorithm to set.
         * @return This builder for chaining.
         */
        public Builder setAlgorithm(com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          algorithm_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3 [default = UNDEFINED];</code>
         * @return This builder for chaining.
         */
        public Builder clearAlgorithm() {
          bitField0_ = (bitField0_ & ~0x00000004);
          algorithm_ = 1;
          onChanged();
          return this;
        }
  
        private int security_ = 2;
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
         * @return Whether the security field is set.
         */
        @java.lang.Override public boolean hasSecurity() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
         * @return The security.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(security_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.DEFINER : result;
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
         * @param value The security to set.
         * @return This builder for chaining.
         */
        public Builder setSecurity(com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000008;
          security_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4 [default = DEFINER];</code>
         * @return This builder for chaining.
         */
        public Builder clearSecurity() {
          bitField0_ = (bitField0_ & ~0x00000008);
          security_ = 2;
          onChanged();
          return this;
        }
  
        private int check_ = 1;
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return Whether the check field is set.
         */
        @java.lang.Override public boolean hasCheck() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return The check.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(check_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.LOCAL : result;
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @param value The check to set.
         * @return This builder for chaining.
         */
        public Builder setCheck(com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000010;
          check_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearCheck() {
          bitField0_ = (bitField0_ & ~0x00000010);
          check_ = 1;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.LazyStringList column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureColumnIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            column_ = new com.google.protobuf.LazyStringArrayList(column_);
            bitField0_ |= 0x00000020;
           }
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return A list containing the column.
         */
        public com.google.protobuf.ProtocolStringList
            getColumnList() {
          return column_.getUnmodifiableView();
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return The count of column.
         */
        public int getColumnCount() {
          return column_.size();
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index of the element to return.
         * @return The column at the given index.
         */
        public java.lang.String getColumn(int index) {
          return column_.get(index);
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index of the value to return.
         * @return The bytes of the column at the given index.
         */
        public com.google.protobuf.ByteString
            getColumnBytes(int index) {
          return column_.getByteString(index);
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index to set the value at.
         * @param value The column to set.
         * @return This builder for chaining.
         */
        public Builder setColumn(
            int index, java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param value The column to add.
         * @return This builder for chaining.
         */
        public Builder addColumn(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param values The column to add.
         * @return This builder for chaining.
         */
        public Builder addAllColumn(
            java.lang.Iterable<java.lang.String> values) {
          ensureColumnIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, column_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearColumn() {
          column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param value The bytes of the column to add.
         * @return This builder for chaining.
         */
        public Builder addColumnBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.add(value);
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Find stmt_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder> stmtBuilder_;
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         * @return Whether the stmt field is set.
         */
        public boolean hasStmt() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         * @return The stmt.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt() {
          if (stmtBuilder_ == null) {
            return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
          } else {
            return stmtBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder setStmt(com.mysql.cj.x.protobuf.MysqlxCrud.Find value) {
          if (stmtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            stmt_ = value;
            onChanged();
          } else {
            stmtBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder setStmt(
            com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder builderForValue) {
          if (stmtBuilder_ == null) {
            stmt_ = builderForValue.build();
            onChanged();
          } else {
            stmtBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder mergeStmt(com.mysql.cj.x.protobuf.MysqlxCrud.Find value) {
          if (stmtBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0) &&
                stmt_ != null &&
                stmt_ != com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance()) {
              stmt_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.newBuilder(stmt_).mergeFrom(value).buildPartial();
            } else {
              stmt_ = value;
            }
            onChanged();
          } else {
            stmtBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder clearStmt() {
          if (stmtBuilder_ == null) {
            stmt_ = null;
            onChanged();
          } else {
            stmtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder getStmtBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getStmtFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder() {
          if (stmtBuilder_ != null) {
            return stmtBuilder_.getMessageOrBuilder();
          } else {
            return stmt_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
          }
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Find stmt = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder> 
            getStmtFieldBuilder() {
          if (stmtBuilder_ == null) {
            stmtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder>(
                    getStmt(),
                    getParentForChildren(),
                    isClean());
            stmt_ = null;
          }
          return stmtBuilder_;
        }
  
        private boolean replaceExisting_ ;
        /**
         * <pre>
         ** if true then suppress error when created view already exists;
         *just replace it 
         * </pre>
         *
         * <code>optional bool replace_existing = 8 [default = false];</code>
         * @return Whether the replaceExisting field is set.
         */
        @java.lang.Override
        public boolean hasReplaceExisting() {
          return ((bitField0_ & 0x00000080) != 0);
        }
        /**
         * <pre>
         ** if true then suppress error when created view already exists;
         *just replace it 
         * </pre>
         *
         * <code>optional bool replace_existing = 8 [default = false];</code>
         * @return The replaceExisting.
         */
        @java.lang.Override
        public boolean getReplaceExisting() {
          return replaceExisting_;
        }
        /**
         * <pre>
         ** if true then suppress error when created view already exists;
         *just replace it 
         * </pre>
         *
         * <code>optional bool replace_existing = 8 [default = false];</code>
         * @param value The replaceExisting to set.
         * @return This builder for chaining.
         */
        public Builder setReplaceExisting(boolean value) {
          bitField0_ |= 0x00000080;
          replaceExisting_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** if true then suppress error when created view already exists;
         *just replace it 
         * </pre>
         *
         * <code>optional bool replace_existing = 8 [default = false];</code>
         * @return This builder for chaining.
         */
        public Builder clearReplaceExisting() {
          bitField0_ = (bitField0_ & ~0x00000080);
          replaceExisting_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.CreateView)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.CreateView)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.CreateView DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.CreateView();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.CreateView getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<CreateView>
          PARSER = new com.google.protobuf.AbstractParser<CreateView>() {
        @java.lang.Override
        public CreateView parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new CreateView(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CreateView> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<CreateView> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CreateView getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ModifyViewOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.ModifyView)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return Whether the definer field is set.
       */
      boolean hasDefiner();
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The definer.
       */
      java.lang.String getDefiner();
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The bytes for definer.
       */
      com.google.protobuf.ByteString
          getDefinerBytes();
  
      /**
       * <pre>
       ** defined how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
       * @return Whether the algorithm field is set.
       */
      boolean hasAlgorithm();
      /**
       * <pre>
       ** defined how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
       * @return The algorithm.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm();
  
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
       * @return Whether the security field is set.
       */
      boolean hasSecurity();
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
       * @return The security.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity();
  
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return Whether the check field is set.
       */
      boolean hasCheck();
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return The check.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck();
  
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return A list containing the column.
       */
      java.util.List<java.lang.String>
          getColumnList();
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return The count of column.
       */
      int getColumnCount();
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the element to return.
       * @return The column at the given index.
       */
      java.lang.String getColumn(int index);
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the column at the given index.
       */
      com.google.protobuf.ByteString
          getColumnBytes(int index);
  
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       * @return Whether the stmt field is set.
       */
      boolean hasStmt();
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       * @return The stmt.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt();
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder();
    }
    /**
     * <pre>
     **
     *ModifyView modify existing view based on indicated
     *&#64;ref Mysqlx::Crud::Find message
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.ModifyView}
     */
    public static final class ModifyView extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.ModifyView)
        ModifyViewOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use ModifyView.newBuilder() to construct.
      private ModifyView(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ModifyView() {
        definer_ = "";
        algorithm_ = 1;
        security_ = 1;
        check_ = 1;
        column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new ModifyView();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ModifyView(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                definer_ = bs;
                break;
              }
              case 24: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(3, rawValue);
                } else {
                  bitField0_ |= 0x00000004;
                  algorithm_ = rawValue;
                }
                break;
              }
              case 32: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(4, rawValue);
                } else {
                  bitField0_ |= 0x00000008;
                  security_ = rawValue;
                }
                break;
              }
              case 40: {
                int rawValue = input.readEnum();
                  @SuppressWarnings("deprecation")
                com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption value = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  bitField0_ |= 0x00000010;
                  check_ = rawValue;
                }
                break;
              }
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                  column_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000020;
                }
                column_.add(bs);
                break;
              }
              case 58: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder subBuilder = null;
                if (((bitField0_ & 0x00000020) != 0)) {
                  subBuilder = stmt_.toBuilder();
                }
                stmt_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Find.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(stmt_);
                  stmt_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000020;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000020) != 0)) {
            column_ = column_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_ModifyView_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_ModifyView_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.class, com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.Builder.class);
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be modified 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int DEFINER_FIELD_NUMBER = 2;
      private volatile java.lang.Object definer_;
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return Whether the definer field is set.
       */
      @java.lang.Override
      public boolean hasDefiner() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The definer.
       */
      @java.lang.Override
      public java.lang.String getDefiner() {
        java.lang.Object ref = definer_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            definer_ = s;
          }
          return s;
        }
      }
      /**
       * <pre>
       ** user name of the definer,
       *if the value isn't set then the definer is current user 
       * </pre>
       *
       * <code>optional string definer = 2;</code>
       * @return The bytes for definer.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getDefinerBytes() {
        java.lang.Object ref = definer_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          definer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int ALGORITHM_FIELD_NUMBER = 3;
      private int algorithm_;
      /**
       * <pre>
       ** defined how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
       * @return Whether the algorithm field is set.
       */
      @java.lang.Override public boolean hasAlgorithm() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       ** defined how MySQL Server processes the view 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
       * @return The algorithm.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(algorithm_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.UNDEFINED : result;
      }
  
      public static final int SECURITY_FIELD_NUMBER = 4;
      private int security_;
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
       * @return Whether the security field is set.
       */
      @java.lang.Override public boolean hasSecurity() {
        return ((bitField0_ & 0x00000008) != 0);
      }
      /**
       * <pre>
       ** defines the security context in which the view is going be executed 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
       * @return The security.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(security_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.INVOKER : result;
      }
  
      public static final int CHECK_FIELD_NUMBER = 5;
      private int check_;
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return Whether the check field is set.
       */
      @java.lang.Override public boolean hasCheck() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       ** limits the write operations done on a VIEW 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
       * @return The check.
       */
      @java.lang.Override public com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck() {
        @SuppressWarnings("deprecation")
        com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(check_);
        return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.LOCAL : result;
      }
  
      public static final int COLUMN_FIELD_NUMBER = 6;
      private com.google.protobuf.LazyStringList column_;
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return A list containing the column.
       */
      public com.google.protobuf.ProtocolStringList
          getColumnList() {
        return column_;
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @return The count of column.
       */
      public int getColumnCount() {
        return column_.size();
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the element to return.
       * @return The column at the given index.
       */
      public java.lang.String getColumn(int index) {
        return column_.get(index);
      }
      /**
       * <pre>
       ** defines the list of aliases for column names specified in `stmt` 
       * </pre>
       *
       * <code>repeated string column = 6;</code>
       * @param index The index of the value to return.
       * @return The bytes of the column at the given index.
       */
      public com.google.protobuf.ByteString
          getColumnBytes(int index) {
        return column_.getByteString(index);
      }
  
      public static final int STMT_FIELD_NUMBER = 7;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Find stmt_;
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       * @return Whether the stmt field is set.
       */
      @java.lang.Override
      public boolean hasStmt() {
        return ((bitField0_ & 0x00000020) != 0);
      }
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       * @return The stmt.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt() {
        return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
      }
      /**
       * <pre>
       ** Mysqlx.Crud.Find message from which the SELECT statement
       *is going to be build 
       * </pre>
       *
       * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder() {
        return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (hasStmt()) {
          if (!getStmt().isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, definer_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          output.writeEnum(3, algorithm_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          output.writeEnum(4, security_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          output.writeEnum(5, check_);
        }
        for (int i = 0; i < column_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, column_.getRaw(i));
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          output.writeMessage(7, getStmt());
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, definer_);
        }
        if (((bitField0_ & 0x00000004) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(3, algorithm_);
        }
        if (((bitField0_ & 0x00000008) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, security_);
        }
        if (((bitField0_ & 0x00000010) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, check_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < column_.size(); i++) {
            dataSize += computeStringSizeNoTag(column_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getColumnList().size();
        }
        if (((bitField0_ & 0x00000020) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(7, getStmt());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView other = (com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasDefiner() != other.hasDefiner()) return false;
        if (hasDefiner()) {
          if (!getDefiner()
              .equals(other.getDefiner())) return false;
        }
        if (hasAlgorithm() != other.hasAlgorithm()) return false;
        if (hasAlgorithm()) {
          if (algorithm_ != other.algorithm_) return false;
        }
        if (hasSecurity() != other.hasSecurity()) return false;
        if (hasSecurity()) {
          if (security_ != other.security_) return false;
        }
        if (hasCheck() != other.hasCheck()) return false;
        if (hasCheck()) {
          if (check_ != other.check_) return false;
        }
        if (!getColumnList()
            .equals(other.getColumnList())) return false;
        if (hasStmt() != other.hasStmt()) return false;
        if (hasStmt()) {
          if (!getStmt()
              .equals(other.getStmt())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasDefiner()) {
          hash = (37 * hash) + DEFINER_FIELD_NUMBER;
          hash = (53 * hash) + getDefiner().hashCode();
        }
        if (hasAlgorithm()) {
          hash = (37 * hash) + ALGORITHM_FIELD_NUMBER;
          hash = (53 * hash) + algorithm_;
        }
        if (hasSecurity()) {
          hash = (37 * hash) + SECURITY_FIELD_NUMBER;
          hash = (53 * hash) + security_;
        }
        if (hasCheck()) {
          hash = (37 * hash) + CHECK_FIELD_NUMBER;
          hash = (53 * hash) + check_;
        }
        if (getColumnCount() > 0) {
          hash = (37 * hash) + COLUMN_FIELD_NUMBER;
          hash = (53 * hash) + getColumnList().hashCode();
        }
        if (hasStmt()) {
          hash = (37 * hash) + STMT_FIELD_NUMBER;
          hash = (53 * hash) + getStmt().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *ModifyView modify existing view based on indicated
       *&#64;ref Mysqlx::Crud::Find message
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.ModifyView}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.ModifyView)
          com.mysql.cj.x.protobuf.MysqlxCrud.ModifyViewOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_ModifyView_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_ModifyView_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.class, com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
            getStmtFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          definer_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          algorithm_ = 1;
          bitField0_ = (bitField0_ & ~0x00000004);
          security_ = 1;
          bitField0_ = (bitField0_ & ~0x00000008);
          check_ = 1;
          bitField0_ = (bitField0_ & ~0x00000010);
          column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          if (stmtBuilder_ == null) {
            stmt_ = null;
          } else {
            stmtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_ModifyView_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView result = new com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            to_bitField0_ |= 0x00000002;
          }
          result.definer_ = definer_;
          if (((from_bitField0_ & 0x00000004) != 0)) {
            to_bitField0_ |= 0x00000004;
          }
          result.algorithm_ = algorithm_;
          if (((from_bitField0_ & 0x00000008) != 0)) {
            to_bitField0_ |= 0x00000008;
          }
          result.security_ = security_;
          if (((from_bitField0_ & 0x00000010) != 0)) {
            to_bitField0_ |= 0x00000010;
          }
          result.check_ = check_;
          if (((bitField0_ & 0x00000020) != 0)) {
            column_ = column_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.column_ = column_;
          if (((from_bitField0_ & 0x00000040) != 0)) {
            if (stmtBuilder_ == null) {
              result.stmt_ = stmt_;
            } else {
              result.stmt_ = stmtBuilder_.build();
            }
            to_bitField0_ |= 0x00000020;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasDefiner()) {
            bitField0_ |= 0x00000002;
            definer_ = other.definer_;
            onChanged();
          }
          if (other.hasAlgorithm()) {
            setAlgorithm(other.getAlgorithm());
          }
          if (other.hasSecurity()) {
            setSecurity(other.getSecurity());
          }
          if (other.hasCheck()) {
            setCheck(other.getCheck());
          }
          if (!other.column_.isEmpty()) {
            if (column_.isEmpty()) {
              column_ = other.column_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureColumnIsMutable();
              column_.addAll(other.column_);
            }
            onChanged();
          }
          if (other.hasStmt()) {
            mergeStmt(other.getStmt());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          if (hasStmt()) {
            if (!getStmt().isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be modified 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private java.lang.Object definer_ = "";
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return Whether the definer field is set.
         */
        public boolean hasDefiner() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return The definer.
         */
        public java.lang.String getDefiner() {
          java.lang.Object ref = definer_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              definer_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return The bytes for definer.
         */
        public com.google.protobuf.ByteString
            getDefinerBytes() {
          java.lang.Object ref = definer_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            definer_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @param value The definer to set.
         * @return This builder for chaining.
         */
        public Builder setDefiner(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          definer_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearDefiner() {
          bitField0_ = (bitField0_ & ~0x00000002);
          definer_ = getDefaultInstance().getDefiner();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** user name of the definer,
         *if the value isn't set then the definer is current user 
         * </pre>
         *
         * <code>optional string definer = 2;</code>
         * @param value The bytes for definer to set.
         * @return This builder for chaining.
         */
        public Builder setDefinerBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          definer_ = value;
          onChanged();
          return this;
        }
  
        private int algorithm_ = 1;
        /**
         * <pre>
         ** defined how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
         * @return Whether the algorithm field is set.
         */
        @java.lang.Override public boolean hasAlgorithm() {
          return ((bitField0_ & 0x00000004) != 0);
        }
        /**
         * <pre>
         ** defined how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
         * @return The algorithm.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm getAlgorithm() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.valueOf(algorithm_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm.UNDEFINED : result;
        }
        /**
         * <pre>
         ** defined how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
         * @param value The algorithm to set.
         * @return This builder for chaining.
         */
        public Builder setAlgorithm(com.mysql.cj.x.protobuf.MysqlxCrud.ViewAlgorithm value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000004;
          algorithm_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defined how MySQL Server processes the view 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewAlgorithm algorithm = 3;</code>
         * @return This builder for chaining.
         */
        public Builder clearAlgorithm() {
          bitField0_ = (bitField0_ & ~0x00000004);
          algorithm_ = 1;
          onChanged();
          return this;
        }
  
        private int security_ = 1;
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
         * @return Whether the security field is set.
         */
        @java.lang.Override public boolean hasSecurity() {
          return ((bitField0_ & 0x00000008) != 0);
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
         * @return The security.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity getSecurity() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.valueOf(security_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity.INVOKER : result;
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
         * @param value The security to set.
         * @return This builder for chaining.
         */
        public Builder setSecurity(com.mysql.cj.x.protobuf.MysqlxCrud.ViewSqlSecurity value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000008;
          security_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the security context in which the view is going be executed 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewSqlSecurity security = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearSecurity() {
          bitField0_ = (bitField0_ & ~0x00000008);
          security_ = 1;
          onChanged();
          return this;
        }
  
        private int check_ = 1;
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return Whether the check field is set.
         */
        @java.lang.Override public boolean hasCheck() {
          return ((bitField0_ & 0x00000010) != 0);
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return The check.
         */
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption getCheck() {
          @SuppressWarnings("deprecation")
          com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption result = com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.valueOf(check_);
          return result == null ? com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption.LOCAL : result;
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @param value The check to set.
         * @return This builder for chaining.
         */
        public Builder setCheck(com.mysql.cj.x.protobuf.MysqlxCrud.ViewCheckOption value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000010;
          check_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** limits the write operations done on a VIEW 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.ViewCheckOption check = 5;</code>
         * @return This builder for chaining.
         */
        public Builder clearCheck() {
          bitField0_ = (bitField0_ & ~0x00000010);
          check_ = 1;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.LazyStringList column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureColumnIsMutable() {
          if (!((bitField0_ & 0x00000020) != 0)) {
            column_ = new com.google.protobuf.LazyStringArrayList(column_);
            bitField0_ |= 0x00000020;
           }
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return A list containing the column.
         */
        public com.google.protobuf.ProtocolStringList
            getColumnList() {
          return column_.getUnmodifiableView();
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return The count of column.
         */
        public int getColumnCount() {
          return column_.size();
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index of the element to return.
         * @return The column at the given index.
         */
        public java.lang.String getColumn(int index) {
          return column_.get(index);
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index of the value to return.
         * @return The bytes of the column at the given index.
         */
        public com.google.protobuf.ByteString
            getColumnBytes(int index) {
          return column_.getByteString(index);
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param index The index to set the value at.
         * @param value The column to set.
         * @return This builder for chaining.
         */
        public Builder setColumn(
            int index, java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param value The column to add.
         * @return This builder for chaining.
         */
        public Builder addColumn(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.add(value);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param values The column to add.
         * @return This builder for chaining.
         */
        public Builder addAllColumn(
            java.lang.Iterable<java.lang.String> values) {
          ensureColumnIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, column_);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @return This builder for chaining.
         */
        public Builder clearColumn() {
          column_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** defines the list of aliases for column names specified in `stmt` 
         * </pre>
         *
         * <code>repeated string column = 6;</code>
         * @param value The bytes of the column to add.
         * @return This builder for chaining.
         */
        public Builder addColumnBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureColumnIsMutable();
          column_.add(value);
          onChanged();
          return this;
        }
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Find stmt_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder> stmtBuilder_;
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         * @return Whether the stmt field is set.
         */
        public boolean hasStmt() {
          return ((bitField0_ & 0x00000040) != 0);
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         * @return The stmt.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find getStmt() {
          if (stmtBuilder_ == null) {
            return stmt_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
          } else {
            return stmtBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder setStmt(com.mysql.cj.x.protobuf.MysqlxCrud.Find value) {
          if (stmtBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            stmt_ = value;
            onChanged();
          } else {
            stmtBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder setStmt(
            com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder builderForValue) {
          if (stmtBuilder_ == null) {
            stmt_ = builderForValue.build();
            onChanged();
          } else {
            stmtBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder mergeStmt(com.mysql.cj.x.protobuf.MysqlxCrud.Find value) {
          if (stmtBuilder_ == null) {
            if (((bitField0_ & 0x00000040) != 0) &&
                stmt_ != null &&
                stmt_ != com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance()) {
              stmt_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.newBuilder(stmt_).mergeFrom(value).buildPartial();
            } else {
              stmt_ = value;
            }
            onChanged();
          } else {
            stmtBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000040;
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public Builder clearStmt() {
          if (stmtBuilder_ == null) {
            stmt_ = null;
            onChanged();
          } else {
            stmtBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000040);
          return this;
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder getStmtBuilder() {
          bitField0_ |= 0x00000040;
          onChanged();
          return getStmtFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder getStmtOrBuilder() {
          if (stmtBuilder_ != null) {
            return stmtBuilder_.getMessageOrBuilder();
          } else {
            return stmt_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Find.getDefaultInstance() : stmt_;
          }
        }
        /**
         * <pre>
         ** Mysqlx.Crud.Find message from which the SELECT statement
         *is going to be build 
         * </pre>
         *
         * <code>optional .Mysqlx.Crud.Find stmt = 7;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder> 
            getStmtFieldBuilder() {
          if (stmtBuilder_ == null) {
            stmtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Find, com.mysql.cj.x.protobuf.MysqlxCrud.Find.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.FindOrBuilder>(
                    getStmt(),
                    getParentForChildren(),
                    isClean());
            stmt_ = null;
          }
          return stmtBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.ModifyView)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.ModifyView)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ModifyView>
          PARSER = new com.google.protobuf.AbstractParser<ModifyView>() {
        @java.lang.Override
        public ModifyView parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new ModifyView(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ModifyView> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ModifyView> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.ModifyView getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface DropViewOrBuilder extends
        // @@protoc_insertion_point(interface_extends:Mysqlx.Crud.DropView)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      boolean hasCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection();
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder();
  
      /**
       * <pre>
       ** if true then suppress error when deleted view does not exists 
       * </pre>
       *
       * <code>optional bool if_exists = 2 [default = false];</code>
       * @return Whether the ifExists field is set.
       */
      boolean hasIfExists();
      /**
       * <pre>
       ** if true then suppress error when deleted view does not exists 
       * </pre>
       *
       * <code>optional bool if_exists = 2 [default = false];</code>
       * @return The ifExists.
       */
      boolean getIfExists();
    }
    /**
     * <pre>
     **
     *DropView removing existing view
     * </pre>
     *
     * Protobuf type {@code Mysqlx.Crud.DropView}
     */
    public static final class DropView extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:Mysqlx.Crud.DropView)
        DropViewOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use DropView.newBuilder() to construct.
      private DropView(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private DropView() {
      }
  
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new DropView();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private DropView(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder subBuilder = null;
                if (((bitField0_ & 0x00000001) != 0)) {
                  subBuilder = collection_.toBuilder();
                }
                collection_ = input.readMessage(com.mysql.cj.x.protobuf.MysqlxCrud.Collection.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(collection_);
                  collection_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000001;
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                ifExists_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_DropView_descriptor;
      }
  
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_DropView_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.mysql.cj.x.protobuf.MysqlxCrud.DropView.class, com.mysql.cj.x.protobuf.MysqlxCrud.DropView.Builder.class);
      }
  
      private int bitField0_;
      public static final int COLLECTION_FIELD_NUMBER = 1;
      private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return Whether the collection field is set.
       */
      @java.lang.Override
      public boolean hasCollection() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       * @return The collection.
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
      /**
       * <pre>
       ** name of the VIEW object, which should be deleted 
       * </pre>
       *
       * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
       */
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
        return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
      }
  
      public static final int IF_EXISTS_FIELD_NUMBER = 2;
      private boolean ifExists_;
      /**
       * <pre>
       ** if true then suppress error when deleted view does not exists 
       * </pre>
       *
       * <code>optional bool if_exists = 2 [default = false];</code>
       * @return Whether the ifExists field is set.
       */
      @java.lang.Override
      public boolean hasIfExists() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       ** if true then suppress error when deleted view does not exists 
       * </pre>
       *
       * <code>optional bool if_exists = 2 [default = false];</code>
       * @return The ifExists.
       */
      @java.lang.Override
      public boolean getIfExists() {
        return ifExists_;
      }
  
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasCollection()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!getCollection().isInitialized()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          output.writeBool(2, ifExists_);
        }
        unknownFields.writeTo(output);
      }
  
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getCollection());
        }
        if (((bitField0_ & 0x00000002) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, ifExists_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.mysql.cj.x.protobuf.MysqlxCrud.DropView)) {
          return super.equals(obj);
        }
        com.mysql.cj.x.protobuf.MysqlxCrud.DropView other = (com.mysql.cj.x.protobuf.MysqlxCrud.DropView) obj;
  
        if (hasCollection() != other.hasCollection()) return false;
        if (hasCollection()) {
          if (!getCollection()
              .equals(other.getCollection())) return false;
        }
        if (hasIfExists() != other.hasIfExists()) return false;
        if (hasIfExists()) {
          if (getIfExists()
              != other.getIfExists()) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasCollection()) {
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
        }
        if (hasIfExists()) {
          hash = (37 * hash) + IF_EXISTS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getIfExists());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.mysql.cj.x.protobuf.MysqlxCrud.DropView prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       **
       *DropView removing existing view
       * </pre>
       *
       * Protobuf type {@code Mysqlx.Crud.DropView}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:Mysqlx.Crud.DropView)
          com.mysql.cj.x.protobuf.MysqlxCrud.DropViewOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_DropView_descriptor;
        }
  
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_DropView_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.mysql.cj.x.protobuf.MysqlxCrud.DropView.class, com.mysql.cj.x.protobuf.MysqlxCrud.DropView.Builder.class);
        }
  
        // Construct using com.mysql.cj.x.protobuf.MysqlxCrud.DropView.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getCollectionFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (collectionBuilder_ == null) {
            collection_ = null;
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          ifExists_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.internal_static_Mysqlx_Crud_DropView_descriptor;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DropView getDefaultInstanceForType() {
          return com.mysql.cj.x.protobuf.MysqlxCrud.DropView.getDefaultInstance();
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DropView build() {
          com.mysql.cj.x.protobuf.MysqlxCrud.DropView result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        @java.lang.Override
        public com.mysql.cj.x.protobuf.MysqlxCrud.DropView buildPartial() {
          com.mysql.cj.x.protobuf.MysqlxCrud.DropView result = new com.mysql.cj.x.protobuf.MysqlxCrud.DropView(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            if (collectionBuilder_ == null) {
              result.collection_ = collection_;
            } else {
              result.collection_ = collectionBuilder_.build();
            }
            to_bitField0_ |= 0x00000001;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.ifExists_ = ifExists_;
            to_bitField0_ |= 0x00000002;
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.mysql.cj.x.protobuf.MysqlxCrud.DropView) {
            return mergeFrom((com.mysql.cj.x.protobuf.MysqlxCrud.DropView)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.mysql.cj.x.protobuf.MysqlxCrud.DropView other) {
          if (other == com.mysql.cj.x.protobuf.MysqlxCrud.DropView.getDefaultInstance()) return this;
          if (other.hasCollection()) {
            mergeCollection(other.getCollection());
          }
          if (other.hasIfExists()) {
            setIfExists(other.getIfExists());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        @java.lang.Override
        public final boolean isInitialized() {
          if (!hasCollection()) {
            return false;
          }
          if (!getCollection().isInitialized()) {
            return false;
          }
          return true;
        }
  
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.mysql.cj.x.protobuf.MysqlxCrud.DropView parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.mysql.cj.x.protobuf.MysqlxCrud.DropView) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.mysql.cj.x.protobuf.MysqlxCrud.Collection collection_;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> collectionBuilder_;
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return Whether the collection field is set.
         */
        public boolean hasCollection() {
          return ((bitField0_ & 0x00000001) != 0);
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         * @return The collection.
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection getCollection() {
          if (collectionBuilder_ == null) {
            return collection_ == null ? com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          } else {
            return collectionBuilder_.getMessage();
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            collection_ = value;
            onChanged();
          } else {
            collectionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder setCollection(
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder builderForValue) {
          if (collectionBuilder_ == null) {
            collection_ = builderForValue.build();
            onChanged();
          } else {
            collectionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder mergeCollection(com.mysql.cj.x.protobuf.MysqlxCrud.Collection value) {
          if (collectionBuilder_ == null) {
            if (((bitField0_ & 0x00000001) != 0) &&
                collection_ != null &&
                collection_ != com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance()) {
              collection_ =
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.newBuilder(collection_).mergeFrom(value).buildPartial();
            } else {
              collection_ = value;
            }
            onChanged();
          } else {
            collectionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000001;
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public Builder clearCollection() {
          if (collectionBuilder_ == null) {
            collection_ = null;
            onChanged();
          } else {
            collectionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder getCollectionBuilder() {
          bitField0_ |= 0x00000001;
          onChanged();
          return getCollectionFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        public com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder getCollectionOrBuilder() {
          if (collectionBuilder_ != null) {
            return collectionBuilder_.getMessageOrBuilder();
          } else {
            return collection_ == null ?
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection.getDefaultInstance() : collection_;
          }
        }
        /**
         * <pre>
         ** name of the VIEW object, which should be deleted 
         * </pre>
         *
         * <code>required .Mysqlx.Crud.Collection collection = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder> 
            getCollectionFieldBuilder() {
          if (collectionBuilder_ == null) {
            collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.mysql.cj.x.protobuf.MysqlxCrud.Collection, com.mysql.cj.x.protobuf.MysqlxCrud.Collection.Builder, com.mysql.cj.x.protobuf.MysqlxCrud.CollectionOrBuilder>(
                    getCollection(),
                    getParentForChildren(),
                    isClean());
            collection_ = null;
          }
          return collectionBuilder_;
        }
  
        private boolean ifExists_ ;
        /**
         * <pre>
         ** if true then suppress error when deleted view does not exists 
         * </pre>
         *
         * <code>optional bool if_exists = 2 [default = false];</code>
         * @return Whether the ifExists field is set.
         */
        @java.lang.Override
        public boolean hasIfExists() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * <pre>
         ** if true then suppress error when deleted view does not exists 
         * </pre>
         *
         * <code>optional bool if_exists = 2 [default = false];</code>
         * @return The ifExists.
         */
        @java.lang.Override
        public boolean getIfExists() {
          return ifExists_;
        }
        /**
         * <pre>
         ** if true then suppress error when deleted view does not exists 
         * </pre>
         *
         * <code>optional bool if_exists = 2 [default = false];</code>
         * @param value The ifExists to set.
         * @return This builder for chaining.
         */
        public Builder setIfExists(boolean value) {
          bitField0_ |= 0x00000002;
          ifExists_ = value;
          onChanged();
          return this;
        }
        /**
         * <pre>
         ** if true then suppress error when deleted view does not exists 
         * </pre>
         *
         * <code>optional bool if_exists = 2 [default = false];</code>
         * @return This builder for chaining.
         */
        public Builder clearIfExists() {
          bitField0_ = (bitField0_ & ~0x00000002);
          ifExists_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:Mysqlx.Crud.DropView)
      }
  
      // @@protoc_insertion_point(class_scope:Mysqlx.Crud.DropView)
      private static final com.mysql.cj.x.protobuf.MysqlxCrud.DropView DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.mysql.cj.x.protobuf.MysqlxCrud.DropView();
      }
  
      public static com.mysql.cj.x.protobuf.MysqlxCrud.DropView getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<DropView>
          PARSER = new com.google.protobuf.AbstractParser<DropView>() {
        @java.lang.Override
        public DropView parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new DropView(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<DropView> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<DropView> getParserForType() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.mysql.cj.x.protobuf.MysqlxCrud.DropView getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Column_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Column_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Projection_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Projection_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Collection_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Collection_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Limit_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Limit_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_LimitExpr_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_LimitExpr_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Order_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Order_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_UpdateOperation_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_UpdateOperation_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Find_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Find_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Insert_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Insert_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Insert_TypedRow_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Update_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Update_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_Delete_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_Delete_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_CreateView_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_CreateView_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_ModifyView_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_ModifyView_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_Mysqlx_Crud_DropView_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_Mysqlx_Crud_DropView_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\021mysqlx_crud.proto\022\013Mysqlx.Crud\032\014mysqlx" +
        ".proto\032\021mysqlx_expr.proto\032\026mysqlx_dataty" +
        "pes.proto\"[\n\006Column\022\014\n\004name\030\001 \001(\t\022\r\n\005ali" +
        "as\030\002 \001(\t\0224\n\rdocument_path\030\003 \003(\0132\035.Mysqlx" +
        ".Expr.DocumentPathItem\">\n\nProjection\022!\n\006" +
        "source\030\001 \002(\0132\021.Mysqlx.Expr.Expr\022\r\n\005alias" +
        "\030\002 \001(\t\"*\n\nCollection\022\014\n\004name\030\001 \002(\t\022\016\n\006sc" +
        "hema\030\002 \001(\t\"*\n\005Limit\022\021\n\trow_count\030\001 \002(\004\022\016" +
        "\n\006offset\030\002 \001(\004\"T\n\tLimitExpr\022$\n\trow_count" +
        "\030\001 \002(\0132\021.Mysqlx.Expr.Expr\022!\n\006offset\030\002 \001(" +
        "\0132\021.Mysqlx.Expr.Expr\"~\n\005Order\022\037\n\004expr\030\001 " +
        "\002(\0132\021.Mysqlx.Expr.Expr\0224\n\tdirection\030\002 \001(" +
        "\0162\034.Mysqlx.Crud.Order.Direction:\003ASC\"\036\n\t" +
        "Direction\022\007\n\003ASC\020\001\022\010\n\004DESC\020\002\"\254\002\n\017UpdateO" +
        "peration\022-\n\006source\030\001 \002(\0132\035.Mysqlx.Expr.C" +
        "olumnIdentifier\022:\n\toperation\030\002 \002(\0162\'.Mys" +
        "qlx.Crud.UpdateOperation.UpdateType\022 \n\005v" +
        "alue\030\003 \001(\0132\021.Mysqlx.Expr.Expr\"\213\001\n\nUpdate" +
        "Type\022\007\n\003SET\020\001\022\017\n\013ITEM_REMOVE\020\002\022\014\n\010ITEM_S" +
        "ET\020\003\022\020\n\014ITEM_REPLACE\020\004\022\016\n\nITEM_MERGE\020\005\022\020" +
        "\n\014ARRAY_INSERT\020\006\022\020\n\014ARRAY_APPEND\020\007\022\017\n\013ME" +
        "RGE_PATCH\020\010\"\352\004\n\004Find\022+\n\ncollection\030\002 \002(\013" +
        "2\027.Mysqlx.Crud.Collection\022*\n\ndata_model\030" +
        "\003 \001(\0162\026.Mysqlx.Crud.DataModel\022+\n\nproject" +
        "ion\030\004 \003(\0132\027.Mysqlx.Crud.Projection\022&\n\004ar" +
        "gs\030\013 \003(\0132\030.Mysqlx.Datatypes.Scalar\022#\n\010cr" +
        "iteria\030\005 \001(\0132\021.Mysqlx.Expr.Expr\022!\n\005limit" +
        "\030\006 \001(\0132\022.Mysqlx.Crud.Limit\022!\n\005order\030\007 \003(" +
        "\0132\022.Mysqlx.Crud.Order\022#\n\010grouping\030\010 \003(\0132" +
        "\021.Mysqlx.Expr.Expr\022,\n\021grouping_criteria\030" +
        "\t \001(\0132\021.Mysqlx.Expr.Expr\022*\n\007locking\030\014 \001(" +
        "\0162\031.Mysqlx.Crud.Find.RowLock\0229\n\017locking_" +
        "options\030\r \001(\0162 .Mysqlx.Crud.Find.RowLock" +
        "Options\022*\n\nlimit_expr\030\016 \001(\0132\026.Mysqlx.Cru" +
        "d.LimitExpr\".\n\007RowLock\022\017\n\013SHARED_LOCK\020\001\022" +
        "\022\n\016EXCLUSIVE_LOCK\020\002\"-\n\016RowLockOptions\022\n\n" +
        "\006NOWAIT\020\001\022\017\n\013SKIP_LOCKED\020\002:\004\210\3520\021\"\250\002\n\006Ins" +
        "ert\022+\n\ncollection\030\001 \002(\0132\027.Mysqlx.Crud.Co" +
        "llection\022*\n\ndata_model\030\002 \001(\0162\026.Mysqlx.Cr" +
        "ud.DataModel\022\'\n\nprojection\030\003 \003(\0132\023.Mysql" +
        "x.Crud.Column\022)\n\003row\030\004 \003(\0132\034.Mysqlx.Crud" +
        ".Insert.TypedRow\022&\n\004args\030\005 \003(\0132\030.Mysqlx." +
        "Datatypes.Scalar\022\025\n\006upsert\030\006 \001(\010:\005false\032" +
        ",\n\010TypedRow\022 \n\005field\030\001 \003(\0132\021.Mysqlx.Expr" +
        ".Expr:\004\210\3520\022\"\327\002\n\006Update\022+\n\ncollection\030\002 \002" +
        "(\0132\027.Mysqlx.Crud.Collection\022*\n\ndata_mode" +
        "l\030\003 \001(\0162\026.Mysqlx.Crud.DataModel\022#\n\010crite" +
        "ria\030\004 \001(\0132\021.Mysqlx.Expr.Expr\022!\n\005limit\030\005 " +
        "\001(\0132\022.Mysqlx.Crud.Limit\022!\n\005order\030\006 \003(\0132\022" +
        ".Mysqlx.Crud.Order\022/\n\toperation\030\007 \003(\0132\034." +
        "Mysqlx.Crud.UpdateOperation\022&\n\004args\030\010 \003(" +
        "\0132\030.Mysqlx.Datatypes.Scalar\022*\n\nlimit_exp" +
        "r\030\t \001(\0132\026.Mysqlx.Crud.LimitExpr:\004\210\3520\023\"\246\002" +
        "\n\006Delete\022+\n\ncollection\030\001 \002(\0132\027.Mysqlx.Cr" +
        "ud.Collection\022*\n\ndata_model\030\002 \001(\0162\026.Mysq" +
        "lx.Crud.DataModel\022#\n\010criteria\030\003 \001(\0132\021.My" +
        "sqlx.Expr.Expr\022!\n\005limit\030\004 \001(\0132\022.Mysqlx.C" +
        "rud.Limit\022!\n\005order\030\005 \003(\0132\022.Mysqlx.Crud.O" +
        "rder\022&\n\004args\030\006 \003(\0132\030.Mysqlx.Datatypes.Sc" +
        "alar\022*\n\nlimit_expr\030\007 \001(\0132\026.Mysqlx.Crud.L" +
        "imitExpr:\004\210\3520\024\"\302\002\n\nCreateView\022+\n\ncollect" +
        "ion\030\001 \002(\0132\027.Mysqlx.Crud.Collection\022\017\n\007de" +
        "finer\030\002 \001(\t\0228\n\talgorithm\030\003 \001(\0162\032.Mysqlx." +
        "Crud.ViewAlgorithm:\tUNDEFINED\0227\n\010securit" +
        "y\030\004 \001(\0162\034.Mysqlx.Crud.ViewSqlSecurity:\007D" +
        "EFINER\022+\n\005check\030\005 \001(\0162\034.Mysqlx.Crud.View" +
        "CheckOption\022\016\n\006column\030\006 \003(\t\022\037\n\004stmt\030\007 \002(" +
        "\0132\021.Mysqlx.Crud.Find\022\037\n\020replace_existing" +
        "\030\010 \001(\010:\005false:\004\210\3520\036\"\215\002\n\nModifyView\022+\n\nco" +
        "llection\030\001 \002(\0132\027.Mysqlx.Crud.Collection\022" +
        "\017\n\007definer\030\002 \001(\t\022-\n\talgorithm\030\003 \001(\0162\032.My" +
        "sqlx.Crud.ViewAlgorithm\022.\n\010security\030\004 \001(" +
        "\0162\034.Mysqlx.Crud.ViewSqlSecurity\022+\n\005check" +
        "\030\005 \001(\0162\034.Mysqlx.Crud.ViewCheckOption\022\016\n\006" +
        "column\030\006 \003(\t\022\037\n\004stmt\030\007 \001(\0132\021.Mysqlx.Crud" +
        ".Find:\004\210\3520\037\"W\n\010DropView\022+\n\ncollection\030\001 " +
        "\002(\0132\027.Mysqlx.Crud.Collection\022\030\n\tif_exist" +
        "s\030\002 \001(\010:\005false:\004\210\3520 *$\n\tDataModel\022\014\n\010DOC" +
        "UMENT\020\001\022\t\n\005TABLE\020\002*8\n\rViewAlgorithm\022\r\n\tU" +
        "NDEFINED\020\001\022\t\n\005MERGE\020\002\022\r\n\tTEMPTABLE\020\003*+\n\017" +
        "ViewSqlSecurity\022\013\n\007INVOKER\020\001\022\013\n\007DEFINER\020" +
        "\002**\n\017ViewCheckOption\022\t\n\005LOCAL\020\001\022\014\n\010CASCA" +
        "DED\020\002B\031\n\027com.mysql.cj.x.protobuf"
      };
      descriptor = com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
            com.mysql.cj.x.protobuf.Mysqlx.getDescriptor(),
            com.mysql.cj.x.protobuf.MysqlxExpr.getDescriptor(),
            com.mysql.cj.x.protobuf.MysqlxDatatypes.getDescriptor(),
          });
      internal_static_Mysqlx_Crud_Column_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_Mysqlx_Crud_Column_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Column_descriptor,
          new java.lang.String[] { "Name", "Alias", "DocumentPath", });
      internal_static_Mysqlx_Crud_Projection_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_Mysqlx_Crud_Projection_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Projection_descriptor,
          new java.lang.String[] { "Source", "Alias", });
      internal_static_Mysqlx_Crud_Collection_descriptor =
        getDescriptor().getMessageTypes().get(2);
      internal_static_Mysqlx_Crud_Collection_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Collection_descriptor,
          new java.lang.String[] { "Name", "Schema", });
      internal_static_Mysqlx_Crud_Limit_descriptor =
        getDescriptor().getMessageTypes().get(3);
      internal_static_Mysqlx_Crud_Limit_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Limit_descriptor,
          new java.lang.String[] { "RowCount", "Offset", });
      internal_static_Mysqlx_Crud_LimitExpr_descriptor =
        getDescriptor().getMessageTypes().get(4);
      internal_static_Mysqlx_Crud_LimitExpr_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_LimitExpr_descriptor,
          new java.lang.String[] { "RowCount", "Offset", });
      internal_static_Mysqlx_Crud_Order_descriptor =
        getDescriptor().getMessageTypes().get(5);
      internal_static_Mysqlx_Crud_Order_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Order_descriptor,
          new java.lang.String[] { "Expr", "Direction", });
      internal_static_Mysqlx_Crud_UpdateOperation_descriptor =
        getDescriptor().getMessageTypes().get(6);
      internal_static_Mysqlx_Crud_UpdateOperation_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_UpdateOperation_descriptor,
          new java.lang.String[] { "Source", "Operation", "Value", });
      internal_static_Mysqlx_Crud_Find_descriptor =
        getDescriptor().getMessageTypes().get(7);
      internal_static_Mysqlx_Crud_Find_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Find_descriptor,
          new java.lang.String[] { "Collection", "DataModel", "Projection", "Args", "Criteria", "Limit", "Order", "Grouping", "GroupingCriteria", "Locking", "LockingOptions", "LimitExpr", });
      internal_static_Mysqlx_Crud_Insert_descriptor =
        getDescriptor().getMessageTypes().get(8);
      internal_static_Mysqlx_Crud_Insert_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Insert_descriptor,
          new java.lang.String[] { "Collection", "DataModel", "Projection", "Row", "Args", "Upsert", });
      internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor =
        internal_static_Mysqlx_Crud_Insert_descriptor.getNestedTypes().get(0);
      internal_static_Mysqlx_Crud_Insert_TypedRow_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Insert_TypedRow_descriptor,
          new java.lang.String[] { "Field", });
      internal_static_Mysqlx_Crud_Update_descriptor =
        getDescriptor().getMessageTypes().get(9);
      internal_static_Mysqlx_Crud_Update_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Update_descriptor,
          new java.lang.String[] { "Collection", "DataModel", "Criteria", "Limit", "Order", "Operation", "Args", "LimitExpr", });
      internal_static_Mysqlx_Crud_Delete_descriptor =
        getDescriptor().getMessageTypes().get(10);
      internal_static_Mysqlx_Crud_Delete_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_Delete_descriptor,
          new java.lang.String[] { "Collection", "DataModel", "Criteria", "Limit", "Order", "Args", "LimitExpr", });
      internal_static_Mysqlx_Crud_CreateView_descriptor =
        getDescriptor().getMessageTypes().get(11);
      internal_static_Mysqlx_Crud_CreateView_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_CreateView_descriptor,
          new java.lang.String[] { "Collection", "Definer", "Algorithm", "Security", "Check", "Column", "Stmt", "ReplaceExisting", });
      internal_static_Mysqlx_Crud_ModifyView_descriptor =
        getDescriptor().getMessageTypes().get(12);
      internal_static_Mysqlx_Crud_ModifyView_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_ModifyView_descriptor,
          new java.lang.String[] { "Collection", "Definer", "Algorithm", "Security", "Check", "Column", "Stmt", });
      internal_static_Mysqlx_Crud_DropView_descriptor =
        getDescriptor().getMessageTypes().get(13);
      internal_static_Mysqlx_Crud_DropView_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_Mysqlx_Crud_DropView_descriptor,
          new java.lang.String[] { "Collection", "IfExists", });
      com.google.protobuf.ExtensionRegistry registry =
          com.google.protobuf.ExtensionRegistry.newInstance();
      registry.add(com.mysql.cj.x.protobuf.Mysqlx.clientMessageId);
      com.google.protobuf.Descriptors.FileDescriptor
          .internalUpdateFileDescriptor(descriptor, registry);
      com.mysql.cj.x.protobuf.Mysqlx.getDescriptor();
      com.mysql.cj.x.protobuf.MysqlxExpr.getDescriptor();
      com.mysql.cj.x.protobuf.MysqlxDatatypes.getDescriptor();
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  