All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.substrait.proto.DerivationExpression Maven / Gradle / Ivy

Go to download

Create a well-defined, cross-language specification for data compute operations

There is a newer version: 0.46.1
Show newest version
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: substrait/type_expressions.proto

// Protobuf Java Version: 3.25.5
package io.substrait.proto;

/**
 * Protobuf type {@code substrait.DerivationExpression}
 */
public final class DerivationExpression extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:substrait.DerivationExpression)
    DerivationExpressionOrBuilder {
private static final long serialVersionUID = 0L;
  // Use DerivationExpression.newBuilder() to construct.
  private DerivationExpression(com.google.protobuf.GeneratedMessageV3.Builder builder) {
    super(builder);
  }
  private DerivationExpression() {
  }

  @java.lang.Override
  @SuppressWarnings({"unused"})
  protected java.lang.Object newInstance(
      UnusedPrivateParameter unused) {
    return new DerivationExpression();
  }

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            io.substrait.proto.DerivationExpression.class, io.substrait.proto.DerivationExpression.Builder.class);
  }

  public interface ExpressionFixedCharOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionFixedChar)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    io.substrait.proto.DerivationExpression getLength();
    /**
     * .substrait.DerivationExpression length = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionFixedChar}
   */
  public static final class ExpressionFixedChar extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionFixedChar)
      ExpressionFixedCharOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionFixedChar.newBuilder() to construct.
    private ExpressionFixedChar(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionFixedChar() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionFixedChar();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedChar_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedChar_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionFixedChar.class, io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder.class);
    }

    private int bitField0_;
    public static final int LENGTH_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression length_;
    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getLength() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }
    /**
     * .substrait.DerivationExpression length = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getLength());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getLength());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionFixedChar)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionFixedChar other = (io.substrait.proto.DerivationExpression.ExpressionFixedChar) obj;

      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (!getLength()
            .equals(other.getLength())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + getLength().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar 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 io.substrait.proto.DerivationExpression.ExpressionFixedChar parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar 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 io.substrait.proto.DerivationExpression.ExpressionFixedChar parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar 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(io.substrait.proto.DerivationExpression.ExpressionFixedChar 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 substrait.DerivationExpression.ExpressionFixedChar}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionFixedChar)
        io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedChar_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedChar_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionFixedChar.class, io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionFixedChar.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLengthFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedChar_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedChar getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedChar build() {
        io.substrait.proto.DerivationExpression.ExpressionFixedChar result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedChar buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionFixedChar result = new io.substrait.proto.DerivationExpression.ExpressionFixedChar(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionFixedChar result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.length_ = lengthBuilder_ == null
              ? length_
              : lengthBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionFixedChar) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionFixedChar)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionFixedChar other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance()) return this;
        if (other.hasLength()) {
          mergeLength(other.getLength());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getLengthFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression length_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> lengthBuilder_;
      /**
       * .substrait.DerivationExpression length = 1;
       * @return Whether the length field is set.
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression length = 1;
       * @return The length.
       */
      public io.substrait.proto.DerivationExpression getLength() {
        if (lengthBuilder_ == null) {
          return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        } else {
          return lengthBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          length_ = value;
        } else {
          lengthBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (lengthBuilder_ == null) {
          length_ = builderForValue.build();
        } else {
          lengthBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder mergeLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            length_ != null &&
            length_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getLengthBuilder().mergeFrom(value);
          } else {
            length_ = value;
          }
        } else {
          lengthBuilder_.mergeFrom(value);
        }
        if (length_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000001);
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getLengthBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLengthFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
        if (lengthBuilder_ != null) {
          return lengthBuilder_.getMessageOrBuilder();
        } else {
          return length_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getLengthFieldBuilder() {
        if (lengthBuilder_ == null) {
          lengthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getLength(),
                  getParentForChildren(),
                  isClean());
          length_ = null;
        }
        return lengthBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionFixedChar)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionFixedChar)
    private static final io.substrait.proto.DerivationExpression.ExpressionFixedChar DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionFixedChar();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedChar getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionFixedChar parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionFixedChar getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionVarCharOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionVarChar)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    io.substrait.proto.DerivationExpression getLength();
    /**
     * .substrait.DerivationExpression length = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionVarChar}
   */
  public static final class ExpressionVarChar extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionVarChar)
      ExpressionVarCharOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionVarChar.newBuilder() to construct.
    private ExpressionVarChar(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionVarChar() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionVarChar();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionVarChar_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionVarChar_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionVarChar.class, io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder.class);
    }

    private int bitField0_;
    public static final int LENGTH_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression length_;
    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getLength() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }
    /**
     * .substrait.DerivationExpression length = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getLength());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getLength());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionVarChar)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionVarChar other = (io.substrait.proto.DerivationExpression.ExpressionVarChar) obj;

      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (!getLength()
            .equals(other.getLength())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + getLength().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar 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 io.substrait.proto.DerivationExpression.ExpressionVarChar parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionVarChar 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 io.substrait.proto.DerivationExpression.ExpressionVarChar parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionVarChar 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(io.substrait.proto.DerivationExpression.ExpressionVarChar 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 substrait.DerivationExpression.ExpressionVarChar}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionVarChar)
        io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionVarChar_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionVarChar_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionVarChar.class, io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionVarChar.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLengthFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionVarChar_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionVarChar getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionVarChar build() {
        io.substrait.proto.DerivationExpression.ExpressionVarChar result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionVarChar buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionVarChar result = new io.substrait.proto.DerivationExpression.ExpressionVarChar(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionVarChar result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.length_ = lengthBuilder_ == null
              ? length_
              : lengthBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionVarChar) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionVarChar)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionVarChar other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance()) return this;
        if (other.hasLength()) {
          mergeLength(other.getLength());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getLengthFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression length_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> lengthBuilder_;
      /**
       * .substrait.DerivationExpression length = 1;
       * @return Whether the length field is set.
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression length = 1;
       * @return The length.
       */
      public io.substrait.proto.DerivationExpression getLength() {
        if (lengthBuilder_ == null) {
          return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        } else {
          return lengthBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          length_ = value;
        } else {
          lengthBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (lengthBuilder_ == null) {
          length_ = builderForValue.build();
        } else {
          lengthBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder mergeLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            length_ != null &&
            length_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getLengthBuilder().mergeFrom(value);
          } else {
            length_ = value;
          }
        } else {
          lengthBuilder_.mergeFrom(value);
        }
        if (length_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000001);
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getLengthBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLengthFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
        if (lengthBuilder_ != null) {
          return lengthBuilder_.getMessageOrBuilder();
        } else {
          return length_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getLengthFieldBuilder() {
        if (lengthBuilder_ == null) {
          lengthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getLength(),
                  getParentForChildren(),
                  isClean());
          length_ = null;
        }
        return lengthBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionVarChar)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionVarChar)
    private static final io.substrait.proto.DerivationExpression.ExpressionVarChar DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionVarChar();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionVarChar getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionVarChar parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionVarChar getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionFixedBinaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionFixedBinary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    boolean hasLength();
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    io.substrait.proto.DerivationExpression getLength();
    /**
     * .substrait.DerivationExpression length = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionFixedBinary}
   */
  public static final class ExpressionFixedBinary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionFixedBinary)
      ExpressionFixedBinaryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionFixedBinary.newBuilder() to construct.
    private ExpressionFixedBinary(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionFixedBinary() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionFixedBinary();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedBinary_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedBinary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionFixedBinary.class, io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder.class);
    }

    private int bitField0_;
    public static final int LENGTH_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression length_;
    /**
     * .substrait.DerivationExpression length = 1;
     * @return Whether the length field is set.
     */
    @java.lang.Override
    public boolean hasLength() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression length = 1;
     * @return The length.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getLength() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }
    /**
     * .substrait.DerivationExpression length = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
      return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getLength());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getLength());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionFixedBinary)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionFixedBinary other = (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) obj;

      if (hasLength() != other.hasLength()) return false;
      if (hasLength()) {
        if (!getLength()
            .equals(other.getLength())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLength()) {
        hash = (37 * hash) + LENGTH_FIELD_NUMBER;
        hash = (53 * hash) + getLength().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary 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 io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary 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 io.substrait.proto.DerivationExpression.ExpressionFixedBinary parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary 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(io.substrait.proto.DerivationExpression.ExpressionFixedBinary 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 substrait.DerivationExpression.ExpressionFixedBinary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionFixedBinary)
        io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedBinary_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedBinary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionFixedBinary.class, io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionFixedBinary.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getLengthFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionFixedBinary_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedBinary getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedBinary build() {
        io.substrait.proto.DerivationExpression.ExpressionFixedBinary result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionFixedBinary buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionFixedBinary result = new io.substrait.proto.DerivationExpression.ExpressionFixedBinary(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionFixedBinary result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.length_ = lengthBuilder_ == null
              ? length_
              : lengthBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionFixedBinary) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionFixedBinary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionFixedBinary other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance()) return this;
        if (other.hasLength()) {
          mergeLength(other.getLength());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getLengthFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression length_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> lengthBuilder_;
      /**
       * .substrait.DerivationExpression length = 1;
       * @return Whether the length field is set.
       */
      public boolean hasLength() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression length = 1;
       * @return The length.
       */
      public io.substrait.proto.DerivationExpression getLength() {
        if (lengthBuilder_ == null) {
          return length_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        } else {
          return lengthBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          length_ = value;
        } else {
          lengthBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder setLength(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (lengthBuilder_ == null) {
          length_ = builderForValue.build();
        } else {
          lengthBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder mergeLength(io.substrait.proto.DerivationExpression value) {
        if (lengthBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            length_ != null &&
            length_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getLengthBuilder().mergeFrom(value);
          } else {
            length_ = value;
          }
        } else {
          lengthBuilder_.mergeFrom(value);
        }
        if (length_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public Builder clearLength() {
        bitField0_ = (bitField0_ & ~0x00000001);
        length_ = null;
        if (lengthBuilder_ != null) {
          lengthBuilder_.dispose();
          lengthBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getLengthBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getLengthFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getLengthOrBuilder() {
        if (lengthBuilder_ != null) {
          return lengthBuilder_.getMessageOrBuilder();
        } else {
          return length_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : length_;
        }
      }
      /**
       * .substrait.DerivationExpression length = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getLengthFieldBuilder() {
        if (lengthBuilder_ == null) {
          lengthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getLength(),
                  getParentForChildren(),
                  isClean());
          length_ = null;
        }
        return lengthBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionFixedBinary)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionFixedBinary)
    private static final io.substrait.proto.DerivationExpression.ExpressionFixedBinary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionFixedBinary();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionFixedBinary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionFixedBinary parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionFixedBinary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionDecimalOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionDecimal)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression scale = 1;
     * @return Whether the scale field is set.
     */
    boolean hasScale();
    /**
     * .substrait.DerivationExpression scale = 1;
     * @return The scale.
     */
    io.substrait.proto.DerivationExpression getScale();
    /**
     * .substrait.DerivationExpression scale = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getScaleOrBuilder();

    /**
     * .substrait.DerivationExpression precision = 2;
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * .substrait.DerivationExpression precision = 2;
     * @return The precision.
     */
    io.substrait.proto.DerivationExpression getPrecision();
    /**
     * .substrait.DerivationExpression precision = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder();

    /**
     * uint32 variation_pointer = 3;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionDecimal}
   */
  public static final class ExpressionDecimal extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionDecimal)
      ExpressionDecimalOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionDecimal.newBuilder() to construct.
    private ExpressionDecimal(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionDecimal() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionDecimal();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionDecimal_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionDecimal_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionDecimal.class, io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder.class);
    }

    private int bitField0_;
    public static final int SCALE_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression scale_;
    /**
     * .substrait.DerivationExpression scale = 1;
     * @return Whether the scale field is set.
     */
    @java.lang.Override
    public boolean hasScale() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression scale = 1;
     * @return The scale.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getScale() {
      return scale_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : scale_;
    }
    /**
     * .substrait.DerivationExpression scale = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getScaleOrBuilder() {
      return scale_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : scale_;
    }

    public static final int PRECISION_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression precision_;
    /**
     * .substrait.DerivationExpression precision = 2;
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .substrait.DerivationExpression precision = 2;
     * @return The precision.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getPrecision() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }
    /**
     * .substrait.DerivationExpression precision = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 3;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 3;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 4;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getScale());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getPrecision());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(3, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(4, nullability_);
      }
      getUnknownFields().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, getScale());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getPrecision());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionDecimal)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionDecimal other = (io.substrait.proto.DerivationExpression.ExpressionDecimal) obj;

      if (hasScale() != other.hasScale()) return false;
      if (hasScale()) {
        if (!getScale()
            .equals(other.getScale())) return false;
      }
      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (!getPrecision()
            .equals(other.getPrecision())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasScale()) {
        hash = (37 * hash) + SCALE_FIELD_NUMBER;
        hash = (53 * hash) + getScale().hashCode();
      }
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal 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 io.substrait.proto.DerivationExpression.ExpressionDecimal parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionDecimal 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 io.substrait.proto.DerivationExpression.ExpressionDecimal parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionDecimal 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(io.substrait.proto.DerivationExpression.ExpressionDecimal 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 substrait.DerivationExpression.ExpressionDecimal}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionDecimal)
        io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionDecimal_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionDecimal_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionDecimal.class, io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionDecimal.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getScaleFieldBuilder();
          getPrecisionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        scale_ = null;
        if (scaleBuilder_ != null) {
          scaleBuilder_.dispose();
          scaleBuilder_ = null;
        }
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionDecimal_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionDecimal getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionDecimal build() {
        io.substrait.proto.DerivationExpression.ExpressionDecimal result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionDecimal buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionDecimal result = new io.substrait.proto.DerivationExpression.ExpressionDecimal(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionDecimal result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.scale_ = scaleBuilder_ == null
              ? scale_
              : scaleBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.precision_ = precisionBuilder_ == null
              ? precision_
              : precisionBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionDecimal) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionDecimal)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionDecimal other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance()) return this;
        if (other.hasScale()) {
          mergeScale(other.getScale());
        }
        if (other.hasPrecision()) {
          mergePrecision(other.getPrecision());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getScaleFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getPrecisionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression scale_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> scaleBuilder_;
      /**
       * .substrait.DerivationExpression scale = 1;
       * @return Whether the scale field is set.
       */
      public boolean hasScale() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       * @return The scale.
       */
      public io.substrait.proto.DerivationExpression getScale() {
        if (scaleBuilder_ == null) {
          return scale_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : scale_;
        } else {
          return scaleBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public Builder setScale(io.substrait.proto.DerivationExpression value) {
        if (scaleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          scale_ = value;
        } else {
          scaleBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public Builder setScale(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (scaleBuilder_ == null) {
          scale_ = builderForValue.build();
        } else {
          scaleBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public Builder mergeScale(io.substrait.proto.DerivationExpression value) {
        if (scaleBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            scale_ != null &&
            scale_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getScaleBuilder().mergeFrom(value);
          } else {
            scale_ = value;
          }
        } else {
          scaleBuilder_.mergeFrom(value);
        }
        if (scale_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public Builder clearScale() {
        bitField0_ = (bitField0_ & ~0x00000001);
        scale_ = null;
        if (scaleBuilder_ != null) {
          scaleBuilder_.dispose();
          scaleBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getScaleBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getScaleFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getScaleOrBuilder() {
        if (scaleBuilder_ != null) {
          return scaleBuilder_.getMessageOrBuilder();
        } else {
          return scale_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : scale_;
        }
      }
      /**
       * .substrait.DerivationExpression scale = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getScaleFieldBuilder() {
        if (scaleBuilder_ == null) {
          scaleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getScale(),
                  getParentForChildren(),
                  isClean());
          scale_ = null;
        }
        return scaleBuilder_;
      }

      private io.substrait.proto.DerivationExpression precision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> precisionBuilder_;
      /**
       * .substrait.DerivationExpression precision = 2;
       * @return Whether the precision field is set.
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       * @return The precision.
       */
      public io.substrait.proto.DerivationExpression getPrecision() {
        if (precisionBuilder_ == null) {
          return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        } else {
          return precisionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public Builder setPrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precision_ = value;
        } else {
          precisionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public Builder setPrecision(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (precisionBuilder_ == null) {
          precision_ = builderForValue.build();
        } else {
          precisionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public Builder mergePrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            precision_ != null &&
            precision_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getPrecisionBuilder().mergeFrom(value);
          } else {
            precision_ = value;
          }
        } else {
          precisionBuilder_.mergeFrom(value);
        }
        if (precision_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000002);
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getPrecisionBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPrecisionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
        if (precisionBuilder_ != null) {
          return precisionBuilder_.getMessageOrBuilder();
        } else {
          return precision_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        }
      }
      /**
       * .substrait.DerivationExpression precision = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getPrecisionFieldBuilder() {
        if (precisionBuilder_ == null) {
          precisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getPrecision(),
                  getParentForChildren(),
                  isClean());
          precision_ = null;
        }
        return precisionBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 3;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 3;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 3;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000004);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000008);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionDecimal)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionDecimal)
    private static final io.substrait.proto.DerivationExpression.ExpressionDecimal DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionDecimal();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionDecimal getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionDecimal parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionDecimal getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionPrecisionTimestampOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionPrecisionTimestamp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    io.substrait.proto.DerivationExpression getPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionPrecisionTimestamp}
   */
  public static final class ExpressionPrecisionTimestamp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionPrecisionTimestamp)
      ExpressionPrecisionTimestampOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionPrecisionTimestamp.newBuilder() to construct.
    private ExpressionPrecisionTimestamp(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionPrecisionTimestamp() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionPrecisionTimestamp();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestamp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestamp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.class, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder.class);
    }

    private int bitField0_;
    public static final int PRECISION_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression precision_;
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getPrecision() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getPrecision());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getPrecision());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp other = (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) obj;

      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (!getPrecision()
            .equals(other.getPrecision())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp 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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp 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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp 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(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp 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 substrait.DerivationExpression.ExpressionPrecisionTimestamp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionPrecisionTimestamp)
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestamp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestamp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.class, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrecisionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestamp_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp build() {
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp result = new io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.precision_ = precisionBuilder_ == null
              ? precision_
              : precisionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance()) return this;
        if (other.hasPrecision()) {
          mergePrecision(other.getPrecision());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPrecisionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression precision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> precisionBuilder_;
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return Whether the precision field is set.
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return The precision.
       */
      public io.substrait.proto.DerivationExpression getPrecision() {
        if (precisionBuilder_ == null) {
          return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        } else {
          return precisionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precision_ = value;
        } else {
          precisionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (precisionBuilder_ == null) {
          precision_ = builderForValue.build();
        } else {
          precisionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder mergePrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            precision_ != null &&
            precision_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getPrecisionBuilder().mergeFrom(value);
          } else {
            precision_ = value;
          }
        } else {
          precisionBuilder_.mergeFrom(value);
        }
        if (precision_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000001);
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getPrecisionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPrecisionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
        if (precisionBuilder_ != null) {
          return precisionBuilder_.getMessageOrBuilder();
        } else {
          return precision_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getPrecisionFieldBuilder() {
        if (precisionBuilder_ == null) {
          precisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getPrecision(),
                  getParentForChildren(),
                  isClean());
          precision_ = null;
        }
        return precisionBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionPrecisionTimestamp)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionPrecisionTimestamp)
    private static final io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionPrecisionTimestamp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionIntervalDayOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionIntervalDay)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    io.substrait.proto.DerivationExpression getPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionIntervalDay}
   */
  public static final class ExpressionIntervalDay extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionIntervalDay)
      ExpressionIntervalDayOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionIntervalDay.newBuilder() to construct.
    private ExpressionIntervalDay(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionIntervalDay() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionIntervalDay();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalDay_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalDay_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionIntervalDay.class, io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder.class);
    }

    private int bitField0_;
    public static final int PRECISION_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression precision_;
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getPrecision() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getPrecision());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getPrecision());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionIntervalDay)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionIntervalDay other = (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) obj;

      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (!getPrecision()
            .equals(other.getPrecision())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay 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 io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay 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 io.substrait.proto.DerivationExpression.ExpressionIntervalDay parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay 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(io.substrait.proto.DerivationExpression.ExpressionIntervalDay 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 substrait.DerivationExpression.ExpressionIntervalDay}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionIntervalDay)
        io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalDay_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalDay_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionIntervalDay.class, io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionIntervalDay.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrecisionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalDay_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalDay getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalDay build() {
        io.substrait.proto.DerivationExpression.ExpressionIntervalDay result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalDay buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionIntervalDay result = new io.substrait.proto.DerivationExpression.ExpressionIntervalDay(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionIntervalDay result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.precision_ = precisionBuilder_ == null
              ? precision_
              : precisionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionIntervalDay) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionIntervalDay)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionIntervalDay other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance()) return this;
        if (other.hasPrecision()) {
          mergePrecision(other.getPrecision());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPrecisionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression precision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> precisionBuilder_;
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return Whether the precision field is set.
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return The precision.
       */
      public io.substrait.proto.DerivationExpression getPrecision() {
        if (precisionBuilder_ == null) {
          return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        } else {
          return precisionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precision_ = value;
        } else {
          precisionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (precisionBuilder_ == null) {
          precision_ = builderForValue.build();
        } else {
          precisionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder mergePrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            precision_ != null &&
            precision_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getPrecisionBuilder().mergeFrom(value);
          } else {
            precision_ = value;
          }
        } else {
          precisionBuilder_.mergeFrom(value);
        }
        if (precision_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000001);
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getPrecisionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPrecisionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
        if (precisionBuilder_ != null) {
          return precisionBuilder_.getMessageOrBuilder();
        } else {
          return precision_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getPrecisionFieldBuilder() {
        if (precisionBuilder_ == null) {
          precisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getPrecision(),
                  getParentForChildren(),
                  isClean());
          precision_ = null;
        }
        return precisionBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionIntervalDay)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionIntervalDay)
    private static final io.substrait.proto.DerivationExpression.ExpressionIntervalDay DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionIntervalDay();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalDay getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionIntervalDay parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionIntervalDay getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionIntervalCompoundOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionIntervalCompound)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    io.substrait.proto.DerivationExpression getPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionIntervalCompound}
   */
  public static final class ExpressionIntervalCompound extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionIntervalCompound)
      ExpressionIntervalCompoundOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionIntervalCompound.newBuilder() to construct.
    private ExpressionIntervalCompound(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionIntervalCompound() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionIntervalCompound();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalCompound_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalCompound_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.class, io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder.class);
    }

    private int bitField0_;
    public static final int PRECISION_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression precision_;
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getPrecision() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getPrecision());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getPrecision());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionIntervalCompound)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionIntervalCompound other = (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) obj;

      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (!getPrecision()
            .equals(other.getPrecision())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound 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 io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound 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 io.substrait.proto.DerivationExpression.ExpressionIntervalCompound parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound 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(io.substrait.proto.DerivationExpression.ExpressionIntervalCompound 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 substrait.DerivationExpression.ExpressionIntervalCompound}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionIntervalCompound)
        io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalCompound_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalCompound_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.class, io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrecisionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionIntervalCompound_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound build() {
        io.substrait.proto.DerivationExpression.ExpressionIntervalCompound result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionIntervalCompound result = new io.substrait.proto.DerivationExpression.ExpressionIntervalCompound(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionIntervalCompound result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.precision_ = precisionBuilder_ == null
              ? precision_
              : precisionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionIntervalCompound)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionIntervalCompound other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance()) return this;
        if (other.hasPrecision()) {
          mergePrecision(other.getPrecision());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPrecisionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression precision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> precisionBuilder_;
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return Whether the precision field is set.
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return The precision.
       */
      public io.substrait.proto.DerivationExpression getPrecision() {
        if (precisionBuilder_ == null) {
          return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        } else {
          return precisionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precision_ = value;
        } else {
          precisionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (precisionBuilder_ == null) {
          precision_ = builderForValue.build();
        } else {
          precisionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder mergePrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            precision_ != null &&
            precision_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getPrecisionBuilder().mergeFrom(value);
          } else {
            precision_ = value;
          }
        } else {
          precisionBuilder_.mergeFrom(value);
        }
        if (precision_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000001);
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getPrecisionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPrecisionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
        if (precisionBuilder_ != null) {
          return precisionBuilder_.getMessageOrBuilder();
        } else {
          return precision_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getPrecisionFieldBuilder() {
        if (precisionBuilder_ == null) {
          precisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getPrecision(),
                  getParentForChildren(),
                  isClean());
          precision_ = null;
        }
        return precisionBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionIntervalCompound)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionIntervalCompound)
    private static final io.substrait.proto.DerivationExpression.ExpressionIntervalCompound DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionIntervalCompound();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionIntervalCompound getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionIntervalCompound parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionPrecisionTimestampTZOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionPrecisionTimestampTZ)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    boolean hasPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    io.substrait.proto.DerivationExpression getPrecision();
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionPrecisionTimestampTZ}
   */
  public static final class ExpressionPrecisionTimestampTZ extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionPrecisionTimestampTZ)
      ExpressionPrecisionTimestampTZOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionPrecisionTimestampTZ.newBuilder() to construct.
    private ExpressionPrecisionTimestampTZ(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionPrecisionTimestampTZ() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionPrecisionTimestampTZ();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestampTZ_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestampTZ_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.class, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder.class);
    }

    private int bitField0_;
    public static final int PRECISION_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression precision_;
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return Whether the precision field is set.
     */
    @java.lang.Override
    public boolean hasPrecision() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     * @return The precision.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getPrecision() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }
    /**
     * .substrait.DerivationExpression precision = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
      return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getPrecision());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getPrecision());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ other = (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) obj;

      if (hasPrecision() != other.hasPrecision()) return false;
      if (hasPrecision()) {
        if (!getPrecision()
            .equals(other.getPrecision())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrecision()) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecision().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ 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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ 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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ 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(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ 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 substrait.DerivationExpression.ExpressionPrecisionTimestampTZ}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionPrecisionTimestampTZ)
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestampTZ_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestampTZ_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.class, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPrecisionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionPrecisionTimestampTZ_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ build() {
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ result = new io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.precision_ = precisionBuilder_ == null
              ? precision_
              : precisionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance()) return this;
        if (other.hasPrecision()) {
          mergePrecision(other.getPrecision());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getPrecisionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression precision_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> precisionBuilder_;
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return Whether the precision field is set.
       */
      public boolean hasPrecision() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       * @return The precision.
       */
      public io.substrait.proto.DerivationExpression getPrecision() {
        if (precisionBuilder_ == null) {
          return precision_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        } else {
          return precisionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precision_ = value;
        } else {
          precisionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder setPrecision(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (precisionBuilder_ == null) {
          precision_ = builderForValue.build();
        } else {
          precisionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder mergePrecision(io.substrait.proto.DerivationExpression value) {
        if (precisionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            precision_ != null &&
            precision_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getPrecisionBuilder().mergeFrom(value);
          } else {
            precision_ = value;
          }
        } else {
          precisionBuilder_.mergeFrom(value);
        }
        if (precision_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public Builder clearPrecision() {
        bitField0_ = (bitField0_ & ~0x00000001);
        precision_ = null;
        if (precisionBuilder_ != null) {
          precisionBuilder_.dispose();
          precisionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getPrecisionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getPrecisionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getPrecisionOrBuilder() {
        if (precisionBuilder_ != null) {
          return precisionBuilder_.getMessageOrBuilder();
        } else {
          return precision_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : precision_;
        }
      }
      /**
       * .substrait.DerivationExpression precision = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getPrecisionFieldBuilder() {
        if (precisionBuilder_ == null) {
          precisionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getPrecision(),
                  getParentForChildren(),
                  isClean());
          precision_ = null;
        }
        return precisionBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionPrecisionTimestampTZ)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionPrecisionTimestampTZ)
    private static final io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionPrecisionTimestampTZ parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionStructOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionStruct)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    java.util.List 
        getTypesList();
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    io.substrait.proto.DerivationExpression getTypes(int index);
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    int getTypesCount();
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    java.util.List 
        getTypesOrBuilderList();
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getTypesOrBuilder(
        int index);

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionStruct}
   */
  public static final class ExpressionStruct extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionStruct)
      ExpressionStructOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionStruct.newBuilder() to construct.
    private ExpressionStruct(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionStruct() {
      types_ = java.util.Collections.emptyList();
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionStruct();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionStruct_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionStruct_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionStruct.class, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder.class);
    }

    public static final int TYPES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List types_;
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    @java.lang.Override
    public java.util.List getTypesList() {
      return types_;
    }
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    @java.lang.Override
    public java.util.List 
        getTypesOrBuilderList() {
      return types_;
    }
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    @java.lang.Override
    public int getTypesCount() {
      return types_.size();
    }
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getTypes(int index) {
      return types_.get(index);
    }
    /**
     * repeated .substrait.DerivationExpression types = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getTypesOrBuilder(
        int index) {
      return types_.get(index);
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < types_.size(); i++) {
        output.writeMessage(1, types_.get(i));
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < types_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, types_.get(i));
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionStruct)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionStruct other = (io.substrait.proto.DerivationExpression.ExpressionStruct) obj;

      if (!getTypesList()
          .equals(other.getTypesList())) return false;
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTypesCount() > 0) {
        hash = (37 * hash) + TYPES_FIELD_NUMBER;
        hash = (53 * hash) + getTypesList().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct 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 io.substrait.proto.DerivationExpression.ExpressionStruct parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionStruct 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 io.substrait.proto.DerivationExpression.ExpressionStruct parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionStruct 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(io.substrait.proto.DerivationExpression.ExpressionStruct 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 substrait.DerivationExpression.ExpressionStruct}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionStruct)
        io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionStruct_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionStruct_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionStruct.class, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionStruct.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (typesBuilder_ == null) {
          types_ = java.util.Collections.emptyList();
        } else {
          types_ = null;
          typesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionStruct_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionStruct getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionStruct build() {
        io.substrait.proto.DerivationExpression.ExpressionStruct result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionStruct buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionStruct result = new io.substrait.proto.DerivationExpression.ExpressionStruct(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.substrait.proto.DerivationExpression.ExpressionStruct result) {
        if (typesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            types_ = java.util.Collections.unmodifiableList(types_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.types_ = types_;
        } else {
          result.types_ = typesBuilder_.build();
        }
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionStruct result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionStruct) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionStruct)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionStruct other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance()) return this;
        if (typesBuilder_ == null) {
          if (!other.types_.isEmpty()) {
            if (types_.isEmpty()) {
              types_ = other.types_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTypesIsMutable();
              types_.addAll(other.types_);
            }
            onChanged();
          }
        } else {
          if (!other.types_.isEmpty()) {
            if (typesBuilder_.isEmpty()) {
              typesBuilder_.dispose();
              typesBuilder_ = null;
              types_ = other.types_;
              bitField0_ = (bitField0_ & ~0x00000001);
              typesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTypesFieldBuilder() : null;
            } else {
              typesBuilder_.addAllMessages(other.types_);
            }
          }
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                io.substrait.proto.DerivationExpression m =
                    input.readMessage(
                        io.substrait.proto.DerivationExpression.parser(),
                        extensionRegistry);
                if (typesBuilder_ == null) {
                  ensureTypesIsMutable();
                  types_.add(m);
                } else {
                  typesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List types_ =
        java.util.Collections.emptyList();
      private void ensureTypesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          types_ = new java.util.ArrayList(types_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> typesBuilder_;

      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public java.util.List getTypesList() {
        if (typesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(types_);
        } else {
          return typesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public int getTypesCount() {
        if (typesBuilder_ == null) {
          return types_.size();
        } else {
          return typesBuilder_.getCount();
        }
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public io.substrait.proto.DerivationExpression getTypes(int index) {
        if (typesBuilder_ == null) {
          return types_.get(index);
        } else {
          return typesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder setTypes(
          int index, io.substrait.proto.DerivationExpression value) {
        if (typesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTypesIsMutable();
          types_.set(index, value);
          onChanged();
        } else {
          typesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder setTypes(
          int index, io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (typesBuilder_ == null) {
          ensureTypesIsMutable();
          types_.set(index, builderForValue.build());
          onChanged();
        } else {
          typesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder addTypes(io.substrait.proto.DerivationExpression value) {
        if (typesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTypesIsMutable();
          types_.add(value);
          onChanged();
        } else {
          typesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder addTypes(
          int index, io.substrait.proto.DerivationExpression value) {
        if (typesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTypesIsMutable();
          types_.add(index, value);
          onChanged();
        } else {
          typesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder addTypes(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (typesBuilder_ == null) {
          ensureTypesIsMutable();
          types_.add(builderForValue.build());
          onChanged();
        } else {
          typesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder addTypes(
          int index, io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (typesBuilder_ == null) {
          ensureTypesIsMutable();
          types_.add(index, builderForValue.build());
          onChanged();
        } else {
          typesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder addAllTypes(
          java.lang.Iterable values) {
        if (typesBuilder_ == null) {
          ensureTypesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, types_);
          onChanged();
        } else {
          typesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder clearTypes() {
        if (typesBuilder_ == null) {
          types_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          typesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public Builder removeTypes(int index) {
        if (typesBuilder_ == null) {
          ensureTypesIsMutable();
          types_.remove(index);
          onChanged();
        } else {
          typesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getTypesBuilder(
          int index) {
        return getTypesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getTypesOrBuilder(
          int index) {
        if (typesBuilder_ == null) {
          return types_.get(index);  } else {
          return typesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public java.util.List 
           getTypesOrBuilderList() {
        if (typesBuilder_ != null) {
          return typesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(types_);
        }
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder addTypesBuilder() {
        return getTypesFieldBuilder().addBuilder(
            io.substrait.proto.DerivationExpression.getDefaultInstance());
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder addTypesBuilder(
          int index) {
        return getTypesFieldBuilder().addBuilder(
            index, io.substrait.proto.DerivationExpression.getDefaultInstance());
      }
      /**
       * repeated .substrait.DerivationExpression types = 1;
       */
      public java.util.List 
           getTypesBuilderList() {
        return getTypesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getTypesFieldBuilder() {
        if (typesBuilder_ == null) {
          typesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  types_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          types_ = null;
        }
        return typesBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionStruct)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionStruct)
    private static final io.substrait.proto.DerivationExpression.ExpressionStruct DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionStruct();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionStruct getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionStruct parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionStruct getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionNamedStructOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionNamedStruct)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated string names = 1;
     * @return A list containing the names.
     */
    java.util.List
        getNamesList();
    /**
     * repeated string names = 1;
     * @return The count of names.
     */
    int getNamesCount();
    /**
     * repeated string names = 1;
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    java.lang.String getNames(int index);
    /**
     * repeated string names = 1;
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    com.google.protobuf.ByteString
        getNamesBytes(int index);

    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     * @return Whether the struct field is set.
     */
    boolean hasStruct();
    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     * @return The struct.
     */
    io.substrait.proto.DerivationExpression.ExpressionStruct getStruct();
    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     */
    io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder getStructOrBuilder();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionNamedStruct}
   */
  public static final class ExpressionNamedStruct extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionNamedStruct)
      ExpressionNamedStructOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionNamedStruct.newBuilder() to construct.
    private ExpressionNamedStruct(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionNamedStruct() {
      names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionNamedStruct();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionNamedStruct_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionNamedStruct_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionNamedStruct.class, io.substrait.proto.DerivationExpression.ExpressionNamedStruct.Builder.class);
    }

    private int bitField0_;
    public static final int NAMES_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList names_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * repeated string names = 1;
     * @return A list containing the names.
     */
    public com.google.protobuf.ProtocolStringList
        getNamesList() {
      return names_;
    }
    /**
     * repeated string names = 1;
     * @return The count of names.
     */
    public int getNamesCount() {
      return names_.size();
    }
    /**
     * repeated string names = 1;
     * @param index The index of the element to return.
     * @return The names at the given index.
     */
    public java.lang.String getNames(int index) {
      return names_.get(index);
    }
    /**
     * repeated string names = 1;
     * @param index The index of the value to return.
     * @return The bytes of the names at the given index.
     */
    public com.google.protobuf.ByteString
        getNamesBytes(int index) {
      return names_.getByteString(index);
    }

    public static final int STRUCT_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression.ExpressionStruct struct_;
    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     * @return Whether the struct field is set.
     */
    @java.lang.Override
    public boolean hasStruct() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     * @return The struct.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionStruct getStruct() {
      return struct_ == null ? io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance() : struct_;
    }
    /**
     * .substrait.DerivationExpression.ExpressionStruct struct = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder getStructOrBuilder() {
      return struct_ == null ? io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance() : struct_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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 < names_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, names_.getRaw(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getStruct());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < names_.size(); i++) {
          dataSize += computeStringSizeNoTag(names_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNamesList().size();
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getStruct());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionNamedStruct)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionNamedStruct other = (io.substrait.proto.DerivationExpression.ExpressionNamedStruct) obj;

      if (!getNamesList()
          .equals(other.getNamesList())) return false;
      if (hasStruct() != other.hasStruct()) return false;
      if (hasStruct()) {
        if (!getStruct()
            .equals(other.getStruct())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNamesCount() > 0) {
        hash = (37 * hash) + NAMES_FIELD_NUMBER;
        hash = (53 * hash) + getNamesList().hashCode();
      }
      if (hasStruct()) {
        hash = (37 * hash) + STRUCT_FIELD_NUMBER;
        hash = (53 * hash) + getStruct().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct 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 io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct 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 io.substrait.proto.DerivationExpression.ExpressionNamedStruct parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct 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(io.substrait.proto.DerivationExpression.ExpressionNamedStruct 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 substrait.DerivationExpression.ExpressionNamedStruct}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionNamedStruct)
        io.substrait.proto.DerivationExpression.ExpressionNamedStructOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionNamedStruct_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionNamedStruct_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionNamedStruct.class, io.substrait.proto.DerivationExpression.ExpressionNamedStruct.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionNamedStruct.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getStructFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        names_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        struct_ = null;
        if (structBuilder_ != null) {
          structBuilder_.dispose();
          structBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionNamedStruct_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionNamedStruct getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionNamedStruct.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionNamedStruct build() {
        io.substrait.proto.DerivationExpression.ExpressionNamedStruct result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionNamedStruct buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionNamedStruct result = new io.substrait.proto.DerivationExpression.ExpressionNamedStruct(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionNamedStruct result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          names_.makeImmutable();
          result.names_ = names_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.struct_ = structBuilder_ == null
              ? struct_
              : structBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionNamedStruct) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionNamedStruct)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionNamedStruct other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionNamedStruct.getDefaultInstance()) return this;
        if (!other.names_.isEmpty()) {
          if (names_.isEmpty()) {
            names_ = other.names_;
            bitField0_ |= 0x00000001;
          } else {
            ensureNamesIsMutable();
            names_.addAll(other.names_);
          }
          onChanged();
        }
        if (other.hasStruct()) {
          mergeStruct(other.getStruct());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureNamesIsMutable();
                names_.add(s);
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getStructFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringArrayList names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureNamesIsMutable() {
        if (!names_.isModifiable()) {
          names_ = new com.google.protobuf.LazyStringArrayList(names_);
        }
        bitField0_ |= 0x00000001;
      }
      /**
       * repeated string names = 1;
       * @return A list containing the names.
       */
      public com.google.protobuf.ProtocolStringList
          getNamesList() {
        names_.makeImmutable();
        return names_;
      }
      /**
       * repeated string names = 1;
       * @return The count of names.
       */
      public int getNamesCount() {
        return names_.size();
      }
      /**
       * repeated string names = 1;
       * @param index The index of the element to return.
       * @return The names at the given index.
       */
      public java.lang.String getNames(int index) {
        return names_.get(index);
      }
      /**
       * repeated string names = 1;
       * @param index The index of the value to return.
       * @return The bytes of the names at the given index.
       */
      public com.google.protobuf.ByteString
          getNamesBytes(int index) {
        return names_.getByteString(index);
      }
      /**
       * repeated string names = 1;
       * @param index The index to set the value at.
       * @param value The names to set.
       * @return This builder for chaining.
       */
      public Builder setNames(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamesIsMutable();
        names_.set(index, value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * repeated string names = 1;
       * @param value The names to add.
       * @return This builder for chaining.
       */
      public Builder addNames(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureNamesIsMutable();
        names_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * repeated string names = 1;
       * @param values The names to add.
       * @return This builder for chaining.
       */
      public Builder addAllNames(
          java.lang.Iterable values) {
        ensureNamesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, names_);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * repeated string names = 1;
       * @return This builder for chaining.
       */
      public Builder clearNames() {
        names_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);;
        onChanged();
        return this;
      }
      /**
       * repeated string names = 1;
       * @param value The bytes of the names to add.
       * @return This builder for chaining.
       */
      public Builder addNamesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureNamesIsMutable();
        names_.add(value);
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private io.substrait.proto.DerivationExpression.ExpressionStruct struct_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder> structBuilder_;
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       * @return Whether the struct field is set.
       */
      public boolean hasStruct() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       * @return The struct.
       */
      public io.substrait.proto.DerivationExpression.ExpressionStruct getStruct() {
        if (structBuilder_ == null) {
          return struct_ == null ? io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance() : struct_;
        } else {
          return structBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public Builder setStruct(io.substrait.proto.DerivationExpression.ExpressionStruct value) {
        if (structBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          struct_ = value;
        } else {
          structBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public Builder setStruct(
          io.substrait.proto.DerivationExpression.ExpressionStruct.Builder builderForValue) {
        if (structBuilder_ == null) {
          struct_ = builderForValue.build();
        } else {
          structBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public Builder mergeStruct(io.substrait.proto.DerivationExpression.ExpressionStruct value) {
        if (structBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            struct_ != null &&
            struct_ != io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance()) {
            getStructBuilder().mergeFrom(value);
          } else {
            struct_ = value;
          }
        } else {
          structBuilder_.mergeFrom(value);
        }
        if (struct_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public Builder clearStruct() {
        bitField0_ = (bitField0_ & ~0x00000002);
        struct_ = null;
        if (structBuilder_ != null) {
          structBuilder_.dispose();
          structBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public io.substrait.proto.DerivationExpression.ExpressionStruct.Builder getStructBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getStructFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      public io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder getStructOrBuilder() {
        if (structBuilder_ != null) {
          return structBuilder_.getMessageOrBuilder();
        } else {
          return struct_ == null ?
              io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance() : struct_;
        }
      }
      /**
       * .substrait.DerivationExpression.ExpressionStruct struct = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder> 
          getStructFieldBuilder() {
        if (structBuilder_ == null) {
          structBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder>(
                  getStruct(),
                  getParentForChildren(),
                  isClean());
          struct_ = null;
        }
        return structBuilder_;
      }
      @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:substrait.DerivationExpression.ExpressionNamedStruct)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionNamedStruct)
    private static final io.substrait.proto.DerivationExpression.ExpressionNamedStruct DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionNamedStruct();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionNamedStruct getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionNamedStruct parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionNamedStruct getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionListOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionList)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression type = 1;
     * @return Whether the type field is set.
     */
    boolean hasType();
    /**
     * .substrait.DerivationExpression type = 1;
     * @return The type.
     */
    io.substrait.proto.DerivationExpression getType();
    /**
     * .substrait.DerivationExpression type = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getTypeOrBuilder();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionList}
   */
  public static final class ExpressionList extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionList)
      ExpressionListOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionList.newBuilder() to construct.
    private ExpressionList(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionList() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionList();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionList_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionList.class, io.substrait.proto.DerivationExpression.ExpressionList.Builder.class);
    }

    private int bitField0_;
    public static final int TYPE_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression type_;
    /**
     * .substrait.DerivationExpression type = 1;
     * @return Whether the type field is set.
     */
    @java.lang.Override
    public boolean hasType() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression type = 1;
     * @return The type.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getType() {
      return type_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : type_;
    }
    /**
     * .substrait.DerivationExpression type = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getTypeOrBuilder() {
      return type_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : type_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getType());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().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, getType());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionList)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionList other = (io.substrait.proto.DerivationExpression.ExpressionList) obj;

      if (hasType() != other.hasType()) return false;
      if (hasType()) {
        if (!getType()
            .equals(other.getType())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasType()) {
        hash = (37 * hash) + TYPE_FIELD_NUMBER;
        hash = (53 * hash) + getType().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList 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 io.substrait.proto.DerivationExpression.ExpressionList parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionList 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 io.substrait.proto.DerivationExpression.ExpressionList parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionList 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(io.substrait.proto.DerivationExpression.ExpressionList 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 substrait.DerivationExpression.ExpressionList}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionList)
        io.substrait.proto.DerivationExpression.ExpressionListOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionList_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionList.class, io.substrait.proto.DerivationExpression.ExpressionList.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionList.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getTypeFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionList_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionList getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionList build() {
        io.substrait.proto.DerivationExpression.ExpressionList result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionList buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionList result = new io.substrait.proto.DerivationExpression.ExpressionList(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionList result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = typeBuilder_ == null
              ? type_
              : typeBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionList) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionList)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionList other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance()) return this;
        if (other.hasType()) {
          mergeType(other.getType());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTypeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression type_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> typeBuilder_;
      /**
       * .substrait.DerivationExpression type = 1;
       * @return Whether the type field is set.
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression type = 1;
       * @return The type.
       */
      public io.substrait.proto.DerivationExpression getType() {
        if (typeBuilder_ == null) {
          return type_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : type_;
        } else {
          return typeBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public Builder setType(io.substrait.proto.DerivationExpression value) {
        if (typeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
        } else {
          typeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public Builder setType(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (typeBuilder_ == null) {
          type_ = builderForValue.build();
        } else {
          typeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public Builder mergeType(io.substrait.proto.DerivationExpression value) {
        if (typeBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            type_ != null &&
            type_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getTypeBuilder().mergeFrom(value);
          } else {
            type_ = value;
          }
        } else {
          typeBuilder_.mergeFrom(value);
        }
        if (type_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = null;
        if (typeBuilder_ != null) {
          typeBuilder_.dispose();
          typeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getTypeBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getTypeFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getTypeOrBuilder() {
        if (typeBuilder_ != null) {
          return typeBuilder_.getMessageOrBuilder();
        } else {
          return type_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : type_;
        }
      }
      /**
       * .substrait.DerivationExpression type = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getTypeFieldBuilder() {
        if (typeBuilder_ == null) {
          typeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getType(),
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        return typeBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionList)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionList)
    private static final io.substrait.proto.DerivationExpression.ExpressionList DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionList();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionList getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionList parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionList getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionMapOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionMap)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression key = 1;
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * .substrait.DerivationExpression key = 1;
     * @return The key.
     */
    io.substrait.proto.DerivationExpression getKey();
    /**
     * .substrait.DerivationExpression key = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getKeyOrBuilder();

    /**
     * .substrait.DerivationExpression value = 2;
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * .substrait.DerivationExpression value = 2;
     * @return The value.
     */
    io.substrait.proto.DerivationExpression getValue();
    /**
     * .substrait.DerivationExpression value = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getValueOrBuilder();

    /**
     * uint32 variation_pointer = 3;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionMap}
   */
  public static final class ExpressionMap extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionMap)
      ExpressionMapOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionMap.newBuilder() to construct.
    private ExpressionMap(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionMap() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionMap();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionMap_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionMap_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionMap.class, io.substrait.proto.DerivationExpression.ExpressionMap.Builder.class);
    }

    private int bitField0_;
    public static final int KEY_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression key_;
    /**
     * .substrait.DerivationExpression key = 1;
     * @return Whether the key field is set.
     */
    @java.lang.Override
    public boolean hasKey() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression key = 1;
     * @return The key.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getKey() {
      return key_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : key_;
    }
    /**
     * .substrait.DerivationExpression key = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getKeyOrBuilder() {
      return key_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : key_;
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression value_;
    /**
     * .substrait.DerivationExpression value = 2;
     * @return Whether the value field is set.
     */
    @java.lang.Override
    public boolean hasValue() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .substrait.DerivationExpression value = 2;
     * @return The value.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getValue() {
      return value_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : value_;
    }
    /**
     * .substrait.DerivationExpression value = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getValueOrBuilder() {
      return value_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : value_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 3;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 3;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 4;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 4;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      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, getKey());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getValue());
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(3, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(4, nullability_);
      }
      getUnknownFields().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, getKey());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionMap)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionMap other = (io.substrait.proto.DerivationExpression.ExpressionMap) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap 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 io.substrait.proto.DerivationExpression.ExpressionMap parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionMap 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 io.substrait.proto.DerivationExpression.ExpressionMap parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionMap 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(io.substrait.proto.DerivationExpression.ExpressionMap 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 substrait.DerivationExpression.ExpressionMap}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionMap)
        io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionMap_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionMap_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionMap.class, io.substrait.proto.DerivationExpression.ExpressionMap.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionMap.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getKeyFieldBuilder();
          getValueFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        key_ = null;
        if (keyBuilder_ != null) {
          keyBuilder_.dispose();
          keyBuilder_ = null;
        }
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionMap_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionMap getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionMap build() {
        io.substrait.proto.DerivationExpression.ExpressionMap result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionMap buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionMap result = new io.substrait.proto.DerivationExpression.ExpressionMap(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionMap result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.key_ = keyBuilder_ == null
              ? key_
              : keyBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.value_ = valueBuilder_ == null
              ? value_
              : valueBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.nullability_ = nullability_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionMap) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionMap)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionMap other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance()) return this;
        if (other.hasKey()) {
          mergeKey(other.getKey());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getKeyFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getValueFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 24: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 32: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression key_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> keyBuilder_;
      /**
       * .substrait.DerivationExpression key = 1;
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression key = 1;
       * @return The key.
       */
      public io.substrait.proto.DerivationExpression getKey() {
        if (keyBuilder_ == null) {
          return key_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : key_;
        } else {
          return keyBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public Builder setKey(io.substrait.proto.DerivationExpression value) {
        if (keyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          key_ = value;
        } else {
          keyBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public Builder setKey(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (keyBuilder_ == null) {
          key_ = builderForValue.build();
        } else {
          keyBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public Builder mergeKey(io.substrait.proto.DerivationExpression value) {
        if (keyBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            key_ != null &&
            key_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getKeyBuilder().mergeFrom(value);
          } else {
            key_ = value;
          }
        } else {
          keyBuilder_.mergeFrom(value);
        }
        if (key_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public Builder clearKey() {
        bitField0_ = (bitField0_ & ~0x00000001);
        key_ = null;
        if (keyBuilder_ != null) {
          keyBuilder_.dispose();
          keyBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getKeyBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getKeyFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getKeyOrBuilder() {
        if (keyBuilder_ != null) {
          return keyBuilder_.getMessageOrBuilder();
        } else {
          return key_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : key_;
        }
      }
      /**
       * .substrait.DerivationExpression key = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getKeyFieldBuilder() {
        if (keyBuilder_ == null) {
          keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getKey(),
                  getParentForChildren(),
                  isClean());
          key_ = null;
        }
        return keyBuilder_;
      }

      private io.substrait.proto.DerivationExpression value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> valueBuilder_;
      /**
       * .substrait.DerivationExpression value = 2;
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression value = 2;
       * @return The value.
       */
      public io.substrait.proto.DerivationExpression getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public Builder setValue(io.substrait.proto.DerivationExpression value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
        } else {
          valueBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public Builder setValue(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public Builder mergeValue(io.substrait.proto.DerivationExpression value) {
        if (valueBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            value_ != null &&
            value_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getValueBuilder().mergeFrom(value);
          } else {
            value_ = value;
          }
        } else {
          valueBuilder_.mergeFrom(value);
        }
        if (value_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public Builder clearValue() {
        bitField0_ = (bitField0_ & ~0x00000002);
        value_ = null;
        if (valueBuilder_ != null) {
          valueBuilder_.dispose();
          valueBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getValueBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : value_;
        }
      }
      /**
       * .substrait.DerivationExpression value = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 3;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 3;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 3;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000004);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000008;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 4;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000008);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionMap)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionMap)
    private static final io.substrait.proto.DerivationExpression.ExpressionMap DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionMap();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionMap getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionMap parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionMap getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExpressionUserDefinedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ExpressionUserDefined)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 type_pointer = 1;
     * @return The typePointer.
     */
    int getTypePointer();

    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    int getVariationPointer();

    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    int getNullabilityValue();
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    io.substrait.proto.Type.Nullability getNullability();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ExpressionUserDefined}
   */
  public static final class ExpressionUserDefined extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ExpressionUserDefined)
      ExpressionUserDefinedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ExpressionUserDefined.newBuilder() to construct.
    private ExpressionUserDefined(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ExpressionUserDefined() {
      nullability_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ExpressionUserDefined();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionUserDefined_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionUserDefined_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ExpressionUserDefined.class, io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder.class);
    }

    public static final int TYPE_POINTER_FIELD_NUMBER = 1;
    private int typePointer_ = 0;
    /**
     * uint32 type_pointer = 1;
     * @return The typePointer.
     */
    @java.lang.Override
    public int getTypePointer() {
      return typePointer_;
    }

    public static final int VARIATION_POINTER_FIELD_NUMBER = 2;
    private int variationPointer_ = 0;
    /**
     * uint32 variation_pointer = 2;
     * @return The variationPointer.
     */
    @java.lang.Override
    public int getVariationPointer() {
      return variationPointer_;
    }

    public static final int NULLABILITY_FIELD_NUMBER = 3;
    private int nullability_ = 0;
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The enum numeric value on the wire for nullability.
     */
    @java.lang.Override public int getNullabilityValue() {
      return nullability_;
    }
    /**
     * .substrait.Type.Nullability nullability = 3;
     * @return The nullability.
     */
    @java.lang.Override public io.substrait.proto.Type.Nullability getNullability() {
      io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
      return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : 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;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (typePointer_ != 0) {
        output.writeUInt32(1, typePointer_);
      }
      if (variationPointer_ != 0) {
        output.writeUInt32(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        output.writeEnum(3, nullability_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (typePointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, typePointer_);
      }
      if (variationPointer_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, variationPointer_);
      }
      if (nullability_ != io.substrait.proto.Type.Nullability.NULLABILITY_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, nullability_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ExpressionUserDefined)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ExpressionUserDefined other = (io.substrait.proto.DerivationExpression.ExpressionUserDefined) obj;

      if (getTypePointer()
          != other.getTypePointer()) return false;
      if (getVariationPointer()
          != other.getVariationPointer()) return false;
      if (nullability_ != other.nullability_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TYPE_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getTypePointer();
      hash = (37 * hash) + VARIATION_POINTER_FIELD_NUMBER;
      hash = (53 * hash) + getVariationPointer();
      hash = (37 * hash) + NULLABILITY_FIELD_NUMBER;
      hash = (53 * hash) + nullability_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined 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 io.substrait.proto.DerivationExpression.ExpressionUserDefined parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined 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 io.substrait.proto.DerivationExpression.ExpressionUserDefined parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined 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(io.substrait.proto.DerivationExpression.ExpressionUserDefined 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 substrait.DerivationExpression.ExpressionUserDefined}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ExpressionUserDefined)
        io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionUserDefined_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionUserDefined_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ExpressionUserDefined.class, io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ExpressionUserDefined.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        typePointer_ = 0;
        variationPointer_ = 0;
        nullability_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ExpressionUserDefined_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionUserDefined getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionUserDefined build() {
        io.substrait.proto.DerivationExpression.ExpressionUserDefined result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ExpressionUserDefined buildPartial() {
        io.substrait.proto.DerivationExpression.ExpressionUserDefined result = new io.substrait.proto.DerivationExpression.ExpressionUserDefined(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ExpressionUserDefined result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.typePointer_ = typePointer_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.variationPointer_ = variationPointer_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.nullability_ = nullability_;
        }
      }

      @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 io.substrait.proto.DerivationExpression.ExpressionUserDefined) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ExpressionUserDefined)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ExpressionUserDefined other) {
        if (other == io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance()) return this;
        if (other.getTypePointer() != 0) {
          setTypePointer(other.getTypePointer());
        }
        if (other.getVariationPointer() != 0) {
          setVariationPointer(other.getVariationPointer());
        }
        if (other.nullability_ != 0) {
          setNullabilityValue(other.getNullabilityValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                typePointer_ = input.readUInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                variationPointer_ = input.readUInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                nullability_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int typePointer_ ;
      /**
       * uint32 type_pointer = 1;
       * @return The typePointer.
       */
      @java.lang.Override
      public int getTypePointer() {
        return typePointer_;
      }
      /**
       * uint32 type_pointer = 1;
       * @param value The typePointer to set.
       * @return This builder for chaining.
       */
      public Builder setTypePointer(int value) {

        typePointer_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * uint32 type_pointer = 1;
       * @return This builder for chaining.
       */
      public Builder clearTypePointer() {
        bitField0_ = (bitField0_ & ~0x00000001);
        typePointer_ = 0;
        onChanged();
        return this;
      }

      private int variationPointer_ ;
      /**
       * uint32 variation_pointer = 2;
       * @return The variationPointer.
       */
      @java.lang.Override
      public int getVariationPointer() {
        return variationPointer_;
      }
      /**
       * uint32 variation_pointer = 2;
       * @param value The variationPointer to set.
       * @return This builder for chaining.
       */
      public Builder setVariationPointer(int value) {

        variationPointer_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * uint32 variation_pointer = 2;
       * @return This builder for chaining.
       */
      public Builder clearVariationPointer() {
        bitField0_ = (bitField0_ & ~0x00000002);
        variationPointer_ = 0;
        onChanged();
        return this;
      }

      private int nullability_ = 0;
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The enum numeric value on the wire for nullability.
       */
      @java.lang.Override public int getNullabilityValue() {
        return nullability_;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The enum numeric value on the wire for nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullabilityValue(int value) {
        nullability_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return The nullability.
       */
      @java.lang.Override
      public io.substrait.proto.Type.Nullability getNullability() {
        io.substrait.proto.Type.Nullability result = io.substrait.proto.Type.Nullability.forNumber(nullability_);
        return result == null ? io.substrait.proto.Type.Nullability.UNRECOGNIZED : result;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @param value The nullability to set.
       * @return This builder for chaining.
       */
      public Builder setNullability(io.substrait.proto.Type.Nullability value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        nullability_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.Type.Nullability nullability = 3;
       * @return This builder for chaining.
       */
      public Builder clearNullability() {
        bitField0_ = (bitField0_ & ~0x00000004);
        nullability_ = 0;
        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:substrait.DerivationExpression.ExpressionUserDefined)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ExpressionUserDefined)
    private static final io.substrait.proto.DerivationExpression.ExpressionUserDefined DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ExpressionUserDefined();
    }

    public static io.substrait.proto.DerivationExpression.ExpressionUserDefined getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ExpressionUserDefined parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ExpressionUserDefined getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IfElseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.IfElse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression if_condition = 1;
     * @return Whether the ifCondition field is set.
     */
    boolean hasIfCondition();
    /**
     * .substrait.DerivationExpression if_condition = 1;
     * @return The ifCondition.
     */
    io.substrait.proto.DerivationExpression getIfCondition();
    /**
     * .substrait.DerivationExpression if_condition = 1;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getIfConditionOrBuilder();

    /**
     * .substrait.DerivationExpression if_return = 2;
     * @return Whether the ifReturn field is set.
     */
    boolean hasIfReturn();
    /**
     * .substrait.DerivationExpression if_return = 2;
     * @return The ifReturn.
     */
    io.substrait.proto.DerivationExpression getIfReturn();
    /**
     * .substrait.DerivationExpression if_return = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getIfReturnOrBuilder();

    /**
     * .substrait.DerivationExpression else_return = 3;
     * @return Whether the elseReturn field is set.
     */
    boolean hasElseReturn();
    /**
     * .substrait.DerivationExpression else_return = 3;
     * @return The elseReturn.
     */
    io.substrait.proto.DerivationExpression getElseReturn();
    /**
     * .substrait.DerivationExpression else_return = 3;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getElseReturnOrBuilder();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.IfElse}
   */
  public static final class IfElse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.IfElse)
      IfElseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use IfElse.newBuilder() to construct.
    private IfElse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private IfElse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new IfElse();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_IfElse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_IfElse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.IfElse.class, io.substrait.proto.DerivationExpression.IfElse.Builder.class);
    }

    private int bitField0_;
    public static final int IF_CONDITION_FIELD_NUMBER = 1;
    private io.substrait.proto.DerivationExpression ifCondition_;
    /**
     * .substrait.DerivationExpression if_condition = 1;
     * @return Whether the ifCondition field is set.
     */
    @java.lang.Override
    public boolean hasIfCondition() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression if_condition = 1;
     * @return The ifCondition.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getIfCondition() {
      return ifCondition_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifCondition_;
    }
    /**
     * .substrait.DerivationExpression if_condition = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getIfConditionOrBuilder() {
      return ifCondition_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifCondition_;
    }

    public static final int IF_RETURN_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression ifReturn_;
    /**
     * .substrait.DerivationExpression if_return = 2;
     * @return Whether the ifReturn field is set.
     */
    @java.lang.Override
    public boolean hasIfReturn() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .substrait.DerivationExpression if_return = 2;
     * @return The ifReturn.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getIfReturn() {
      return ifReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifReturn_;
    }
    /**
     * .substrait.DerivationExpression if_return = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getIfReturnOrBuilder() {
      return ifReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifReturn_;
    }

    public static final int ELSE_RETURN_FIELD_NUMBER = 3;
    private io.substrait.proto.DerivationExpression elseReturn_;
    /**
     * .substrait.DerivationExpression else_return = 3;
     * @return Whether the elseReturn field is set.
     */
    @java.lang.Override
    public boolean hasElseReturn() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     * .substrait.DerivationExpression else_return = 3;
     * @return The elseReturn.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getElseReturn() {
      return elseReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : elseReturn_;
    }
    /**
     * .substrait.DerivationExpression else_return = 3;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getElseReturnOrBuilder() {
      return elseReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : elseReturn_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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, getIfCondition());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(2, getIfReturn());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        output.writeMessage(3, getElseReturn());
      }
      getUnknownFields().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, getIfCondition());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getIfReturn());
      }
      if (((bitField0_ & 0x00000004) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getElseReturn());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.IfElse)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.IfElse other = (io.substrait.proto.DerivationExpression.IfElse) obj;

      if (hasIfCondition() != other.hasIfCondition()) return false;
      if (hasIfCondition()) {
        if (!getIfCondition()
            .equals(other.getIfCondition())) return false;
      }
      if (hasIfReturn() != other.hasIfReturn()) return false;
      if (hasIfReturn()) {
        if (!getIfReturn()
            .equals(other.getIfReturn())) return false;
      }
      if (hasElseReturn() != other.hasElseReturn()) return false;
      if (hasElseReturn()) {
        if (!getElseReturn()
            .equals(other.getElseReturn())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasIfCondition()) {
        hash = (37 * hash) + IF_CONDITION_FIELD_NUMBER;
        hash = (53 * hash) + getIfCondition().hashCode();
      }
      if (hasIfReturn()) {
        hash = (37 * hash) + IF_RETURN_FIELD_NUMBER;
        hash = (53 * hash) + getIfReturn().hashCode();
      }
      if (hasElseReturn()) {
        hash = (37 * hash) + ELSE_RETURN_FIELD_NUMBER;
        hash = (53 * hash) + getElseReturn().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.IfElse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.IfElse 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 io.substrait.proto.DerivationExpression.IfElse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.IfElse 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 io.substrait.proto.DerivationExpression.IfElse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.IfElse 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(io.substrait.proto.DerivationExpression.IfElse 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 substrait.DerivationExpression.IfElse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.IfElse)
        io.substrait.proto.DerivationExpression.IfElseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_IfElse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_IfElse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.IfElse.class, io.substrait.proto.DerivationExpression.IfElse.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.IfElse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getIfConditionFieldBuilder();
          getIfReturnFieldBuilder();
          getElseReturnFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ifCondition_ = null;
        if (ifConditionBuilder_ != null) {
          ifConditionBuilder_.dispose();
          ifConditionBuilder_ = null;
        }
        ifReturn_ = null;
        if (ifReturnBuilder_ != null) {
          ifReturnBuilder_.dispose();
          ifReturnBuilder_ = null;
        }
        elseReturn_ = null;
        if (elseReturnBuilder_ != null) {
          elseReturnBuilder_.dispose();
          elseReturnBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_IfElse_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.IfElse getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.IfElse build() {
        io.substrait.proto.DerivationExpression.IfElse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.IfElse buildPartial() {
        io.substrait.proto.DerivationExpression.IfElse result = new io.substrait.proto.DerivationExpression.IfElse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.IfElse result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ifCondition_ = ifConditionBuilder_ == null
              ? ifCondition_
              : ifConditionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.ifReturn_ = ifReturnBuilder_ == null
              ? ifReturn_
              : ifReturnBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.elseReturn_ = elseReturnBuilder_ == null
              ? elseReturn_
              : elseReturnBuilder_.build();
          to_bitField0_ |= 0x00000004;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.IfElse) {
          return mergeFrom((io.substrait.proto.DerivationExpression.IfElse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.IfElse other) {
        if (other == io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance()) return this;
        if (other.hasIfCondition()) {
          mergeIfCondition(other.getIfCondition());
        }
        if (other.hasIfReturn()) {
          mergeIfReturn(other.getIfReturn());
        }
        if (other.hasElseReturn()) {
          mergeElseReturn(other.getElseReturn());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getIfConditionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getIfReturnFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getElseReturnFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private io.substrait.proto.DerivationExpression ifCondition_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> ifConditionBuilder_;
      /**
       * .substrait.DerivationExpression if_condition = 1;
       * @return Whether the ifCondition field is set.
       */
      public boolean hasIfCondition() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       * @return The ifCondition.
       */
      public io.substrait.proto.DerivationExpression getIfCondition() {
        if (ifConditionBuilder_ == null) {
          return ifCondition_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifCondition_;
        } else {
          return ifConditionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public Builder setIfCondition(io.substrait.proto.DerivationExpression value) {
        if (ifConditionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ifCondition_ = value;
        } else {
          ifConditionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public Builder setIfCondition(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (ifConditionBuilder_ == null) {
          ifCondition_ = builderForValue.build();
        } else {
          ifConditionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public Builder mergeIfCondition(io.substrait.proto.DerivationExpression value) {
        if (ifConditionBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            ifCondition_ != null &&
            ifCondition_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getIfConditionBuilder().mergeFrom(value);
          } else {
            ifCondition_ = value;
          }
        } else {
          ifConditionBuilder_.mergeFrom(value);
        }
        if (ifCondition_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public Builder clearIfCondition() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ifCondition_ = null;
        if (ifConditionBuilder_ != null) {
          ifConditionBuilder_.dispose();
          ifConditionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public io.substrait.proto.DerivationExpression.Builder getIfConditionBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getIfConditionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getIfConditionOrBuilder() {
        if (ifConditionBuilder_ != null) {
          return ifConditionBuilder_.getMessageOrBuilder();
        } else {
          return ifCondition_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : ifCondition_;
        }
      }
      /**
       * .substrait.DerivationExpression if_condition = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getIfConditionFieldBuilder() {
        if (ifConditionBuilder_ == null) {
          ifConditionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getIfCondition(),
                  getParentForChildren(),
                  isClean());
          ifCondition_ = null;
        }
        return ifConditionBuilder_;
      }

      private io.substrait.proto.DerivationExpression ifReturn_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> ifReturnBuilder_;
      /**
       * .substrait.DerivationExpression if_return = 2;
       * @return Whether the ifReturn field is set.
       */
      public boolean hasIfReturn() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       * @return The ifReturn.
       */
      public io.substrait.proto.DerivationExpression getIfReturn() {
        if (ifReturnBuilder_ == null) {
          return ifReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : ifReturn_;
        } else {
          return ifReturnBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public Builder setIfReturn(io.substrait.proto.DerivationExpression value) {
        if (ifReturnBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ifReturn_ = value;
        } else {
          ifReturnBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public Builder setIfReturn(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (ifReturnBuilder_ == null) {
          ifReturn_ = builderForValue.build();
        } else {
          ifReturnBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public Builder mergeIfReturn(io.substrait.proto.DerivationExpression value) {
        if (ifReturnBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            ifReturn_ != null &&
            ifReturn_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getIfReturnBuilder().mergeFrom(value);
          } else {
            ifReturn_ = value;
          }
        } else {
          ifReturnBuilder_.mergeFrom(value);
        }
        if (ifReturn_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public Builder clearIfReturn() {
        bitField0_ = (bitField0_ & ~0x00000002);
        ifReturn_ = null;
        if (ifReturnBuilder_ != null) {
          ifReturnBuilder_.dispose();
          ifReturnBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getIfReturnBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getIfReturnFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getIfReturnOrBuilder() {
        if (ifReturnBuilder_ != null) {
          return ifReturnBuilder_.getMessageOrBuilder();
        } else {
          return ifReturn_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : ifReturn_;
        }
      }
      /**
       * .substrait.DerivationExpression if_return = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getIfReturnFieldBuilder() {
        if (ifReturnBuilder_ == null) {
          ifReturnBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getIfReturn(),
                  getParentForChildren(),
                  isClean());
          ifReturn_ = null;
        }
        return ifReturnBuilder_;
      }

      private io.substrait.proto.DerivationExpression elseReturn_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> elseReturnBuilder_;
      /**
       * .substrait.DerivationExpression else_return = 3;
       * @return Whether the elseReturn field is set.
       */
      public boolean hasElseReturn() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       * @return The elseReturn.
       */
      public io.substrait.proto.DerivationExpression getElseReturn() {
        if (elseReturnBuilder_ == null) {
          return elseReturn_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : elseReturn_;
        } else {
          return elseReturnBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public Builder setElseReturn(io.substrait.proto.DerivationExpression value) {
        if (elseReturnBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          elseReturn_ = value;
        } else {
          elseReturnBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public Builder setElseReturn(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (elseReturnBuilder_ == null) {
          elseReturn_ = builderForValue.build();
        } else {
          elseReturnBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public Builder mergeElseReturn(io.substrait.proto.DerivationExpression value) {
        if (elseReturnBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            elseReturn_ != null &&
            elseReturn_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getElseReturnBuilder().mergeFrom(value);
          } else {
            elseReturn_ = value;
          }
        } else {
          elseReturnBuilder_.mergeFrom(value);
        }
        if (elseReturn_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public Builder clearElseReturn() {
        bitField0_ = (bitField0_ & ~0x00000004);
        elseReturn_ = null;
        if (elseReturnBuilder_ != null) {
          elseReturnBuilder_.dispose();
          elseReturnBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public io.substrait.proto.DerivationExpression.Builder getElseReturnBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getElseReturnFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getElseReturnOrBuilder() {
        if (elseReturnBuilder_ != null) {
          return elseReturnBuilder_.getMessageOrBuilder();
        } else {
          return elseReturn_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : elseReturn_;
        }
      }
      /**
       * .substrait.DerivationExpression else_return = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getElseReturnFieldBuilder() {
        if (elseReturnBuilder_ == null) {
          elseReturnBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getElseReturn(),
                  getParentForChildren(),
                  isClean());
          elseReturn_ = null;
        }
        return elseReturnBuilder_;
      }
      @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:substrait.DerivationExpression.IfElse)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.IfElse)
    private static final io.substrait.proto.DerivationExpression.IfElse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.IfElse();
    }

    public static io.substrait.proto.DerivationExpression.IfElse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public IfElse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.IfElse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnaryOpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.UnaryOp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
     * @return The enum numeric value on the wire for opType.
     */
    int getOpTypeValue();
    /**
     * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
     * @return The opType.
     */
    io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType getOpType();

    /**
     * .substrait.DerivationExpression arg = 2;
     * @return Whether the arg field is set.
     */
    boolean hasArg();
    /**
     * .substrait.DerivationExpression arg = 2;
     * @return The arg.
     */
    io.substrait.proto.DerivationExpression getArg();
    /**
     * .substrait.DerivationExpression arg = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getArgOrBuilder();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.UnaryOp}
   */
  public static final class UnaryOp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.UnaryOp)
      UnaryOpOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UnaryOp.newBuilder() to construct.
    private UnaryOp(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private UnaryOp() {
      opType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UnaryOp();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_UnaryOp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_UnaryOp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.UnaryOp.class, io.substrait.proto.DerivationExpression.UnaryOp.Builder.class);
    }

    /**
     * Protobuf enum {@code substrait.DerivationExpression.UnaryOp.UnaryOpType}
     */
    public enum UnaryOpType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * UNARY_OP_TYPE_UNSPECIFIED = 0;
       */
      UNARY_OP_TYPE_UNSPECIFIED(0),
      /**
       * UNARY_OP_TYPE_BOOLEAN_NOT = 1;
       */
      UNARY_OP_TYPE_BOOLEAN_NOT(1),
      UNRECOGNIZED(-1),
      ;

      /**
       * UNARY_OP_TYPE_UNSPECIFIED = 0;
       */
      public static final int UNARY_OP_TYPE_UNSPECIFIED_VALUE = 0;
      /**
       * UNARY_OP_TYPE_BOOLEAN_NOT = 1;
       */
      public static final int UNARY_OP_TYPE_BOOLEAN_NOT_VALUE = 1;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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 UnaryOpType 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 UnaryOpType forNumber(int value) {
        switch (value) {
          case 0: return UNARY_OP_TYPE_UNSPECIFIED;
          case 1: return UNARY_OP_TYPE_BOOLEAN_NOT;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          UnaryOpType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public UnaryOpType findValueByNumber(int number) {
                return UnaryOpType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        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 io.substrait.proto.DerivationExpression.UnaryOp.getDescriptor().getEnumTypes().get(0);
      }

      private static final UnaryOpType[] VALUES = values();

      public static UnaryOpType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private UnaryOpType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:substrait.DerivationExpression.UnaryOp.UnaryOpType)
    }

    private int bitField0_;
    public static final int OP_TYPE_FIELD_NUMBER = 1;
    private int opType_ = 0;
    /**
     * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
     * @return The enum numeric value on the wire for opType.
     */
    @java.lang.Override public int getOpTypeValue() {
      return opType_;
    }
    /**
     * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
     * @return The opType.
     */
    @java.lang.Override public io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType getOpType() {
      io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType result = io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.forNumber(opType_);
      return result == null ? io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.UNRECOGNIZED : result;
    }

    public static final int ARG_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression arg_;
    /**
     * .substrait.DerivationExpression arg = 2;
     * @return Whether the arg field is set.
     */
    @java.lang.Override
    public boolean hasArg() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression arg = 2;
     * @return The arg.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getArg() {
      return arg_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg_;
    }
    /**
     * .substrait.DerivationExpression arg = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getArgOrBuilder() {
      return arg_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (opType_ != io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.UNARY_OP_TYPE_UNSPECIFIED.getNumber()) {
        output.writeEnum(1, opType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getArg());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (opType_ != io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.UNARY_OP_TYPE_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, opType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getArg());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.UnaryOp)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.UnaryOp other = (io.substrait.proto.DerivationExpression.UnaryOp) obj;

      if (opType_ != other.opType_) return false;
      if (hasArg() != other.hasArg()) return false;
      if (hasArg()) {
        if (!getArg()
            .equals(other.getArg())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OP_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + opType_;
      if (hasArg()) {
        hash = (37 * hash) + ARG_FIELD_NUMBER;
        hash = (53 * hash) + getArg().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp 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 io.substrait.proto.DerivationExpression.UnaryOp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.UnaryOp 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 io.substrait.proto.DerivationExpression.UnaryOp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.UnaryOp 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(io.substrait.proto.DerivationExpression.UnaryOp 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 substrait.DerivationExpression.UnaryOp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.UnaryOp)
        io.substrait.proto.DerivationExpression.UnaryOpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_UnaryOp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_UnaryOp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.UnaryOp.class, io.substrait.proto.DerivationExpression.UnaryOp.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.UnaryOp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArgFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        opType_ = 0;
        arg_ = null;
        if (argBuilder_ != null) {
          argBuilder_.dispose();
          argBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_UnaryOp_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.UnaryOp getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.UnaryOp build() {
        io.substrait.proto.DerivationExpression.UnaryOp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.UnaryOp buildPartial() {
        io.substrait.proto.DerivationExpression.UnaryOp result = new io.substrait.proto.DerivationExpression.UnaryOp(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.UnaryOp result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.opType_ = opType_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.arg_ = argBuilder_ == null
              ? arg_
              : argBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.UnaryOp) {
          return mergeFrom((io.substrait.proto.DerivationExpression.UnaryOp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.UnaryOp other) {
        if (other == io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance()) return this;
        if (other.opType_ != 0) {
          setOpTypeValue(other.getOpTypeValue());
        }
        if (other.hasArg()) {
          mergeArg(other.getArg());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                opType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getArgFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int opType_ = 0;
      /**
       * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
       * @return The enum numeric value on the wire for opType.
       */
      @java.lang.Override public int getOpTypeValue() {
        return opType_;
      }
      /**
       * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
       * @param value The enum numeric value on the wire for opType to set.
       * @return This builder for chaining.
       */
      public Builder setOpTypeValue(int value) {
        opType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
       * @return The opType.
       */
      @java.lang.Override
      public io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType getOpType() {
        io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType result = io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.forNumber(opType_);
        return result == null ? io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType.UNRECOGNIZED : result;
      }
      /**
       * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
       * @param value The opType to set.
       * @return This builder for chaining.
       */
      public Builder setOpType(io.substrait.proto.DerivationExpression.UnaryOp.UnaryOpType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        opType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.UnaryOp.UnaryOpType op_type = 1;
       * @return This builder for chaining.
       */
      public Builder clearOpType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        opType_ = 0;
        onChanged();
        return this;
      }

      private io.substrait.proto.DerivationExpression arg_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> argBuilder_;
      /**
       * .substrait.DerivationExpression arg = 2;
       * @return Whether the arg field is set.
       */
      public boolean hasArg() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       * @return The arg.
       */
      public io.substrait.proto.DerivationExpression getArg() {
        if (argBuilder_ == null) {
          return arg_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg_;
        } else {
          return argBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public Builder setArg(io.substrait.proto.DerivationExpression value) {
        if (argBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          arg_ = value;
        } else {
          argBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public Builder setArg(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (argBuilder_ == null) {
          arg_ = builderForValue.build();
        } else {
          argBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public Builder mergeArg(io.substrait.proto.DerivationExpression value) {
        if (argBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            arg_ != null &&
            arg_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getArgBuilder().mergeFrom(value);
          } else {
            arg_ = value;
          }
        } else {
          argBuilder_.mergeFrom(value);
        }
        if (arg_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public Builder clearArg() {
        bitField0_ = (bitField0_ & ~0x00000002);
        arg_ = null;
        if (argBuilder_ != null) {
          argBuilder_.dispose();
          argBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getArgBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getArgFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getArgOrBuilder() {
        if (argBuilder_ != null) {
          return argBuilder_.getMessageOrBuilder();
        } else {
          return arg_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : arg_;
        }
      }
      /**
       * .substrait.DerivationExpression arg = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getArgFieldBuilder() {
        if (argBuilder_ == null) {
          argBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getArg(),
                  getParentForChildren(),
                  isClean());
          arg_ = null;
        }
        return argBuilder_;
      }
      @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:substrait.DerivationExpression.UnaryOp)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.UnaryOp)
    private static final io.substrait.proto.DerivationExpression.UnaryOp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.UnaryOp();
    }

    public static io.substrait.proto.DerivationExpression.UnaryOp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UnaryOp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.UnaryOp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BinaryOpOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.BinaryOp)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
     * @return The enum numeric value on the wire for opType.
     */
    int getOpTypeValue();
    /**
     * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
     * @return The opType.
     */
    io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType getOpType();

    /**
     * .substrait.DerivationExpression arg1 = 2;
     * @return Whether the arg1 field is set.
     */
    boolean hasArg1();
    /**
     * .substrait.DerivationExpression arg1 = 2;
     * @return The arg1.
     */
    io.substrait.proto.DerivationExpression getArg1();
    /**
     * .substrait.DerivationExpression arg1 = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getArg1OrBuilder();

    /**
     * .substrait.DerivationExpression arg2 = 3;
     * @return Whether the arg2 field is set.
     */
    boolean hasArg2();
    /**
     * .substrait.DerivationExpression arg2 = 3;
     * @return The arg2.
     */
    io.substrait.proto.DerivationExpression getArg2();
    /**
     * .substrait.DerivationExpression arg2 = 3;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getArg2OrBuilder();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.BinaryOp}
   */
  public static final class BinaryOp extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.BinaryOp)
      BinaryOpOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BinaryOp.newBuilder() to construct.
    private BinaryOp(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private BinaryOp() {
      opType_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BinaryOp();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_BinaryOp_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_BinaryOp_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.BinaryOp.class, io.substrait.proto.DerivationExpression.BinaryOp.Builder.class);
    }

    /**
     * Protobuf enum {@code substrait.DerivationExpression.BinaryOp.BinaryOpType}
     */
    public enum BinaryOpType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * BINARY_OP_TYPE_UNSPECIFIED = 0;
       */
      BINARY_OP_TYPE_UNSPECIFIED(0),
      /**
       * BINARY_OP_TYPE_PLUS = 1;
       */
      BINARY_OP_TYPE_PLUS(1),
      /**
       * BINARY_OP_TYPE_MINUS = 2;
       */
      BINARY_OP_TYPE_MINUS(2),
      /**
       * BINARY_OP_TYPE_MULTIPLY = 3;
       */
      BINARY_OP_TYPE_MULTIPLY(3),
      /**
       * BINARY_OP_TYPE_DIVIDE = 4;
       */
      BINARY_OP_TYPE_DIVIDE(4),
      /**
       * BINARY_OP_TYPE_MIN = 5;
       */
      BINARY_OP_TYPE_MIN(5),
      /**
       * BINARY_OP_TYPE_MAX = 6;
       */
      BINARY_OP_TYPE_MAX(6),
      /**
       * BINARY_OP_TYPE_GREATER_THAN = 7;
       */
      BINARY_OP_TYPE_GREATER_THAN(7),
      /**
       * BINARY_OP_TYPE_LESS_THAN = 8;
       */
      BINARY_OP_TYPE_LESS_THAN(8),
      /**
       * BINARY_OP_TYPE_AND = 9;
       */
      BINARY_OP_TYPE_AND(9),
      /**
       * BINARY_OP_TYPE_OR = 10;
       */
      BINARY_OP_TYPE_OR(10),
      /**
       * BINARY_OP_TYPE_EQUALS = 11;
       */
      BINARY_OP_TYPE_EQUALS(11),
      /**
       * BINARY_OP_TYPE_COVERS = 12;
       */
      BINARY_OP_TYPE_COVERS(12),
      UNRECOGNIZED(-1),
      ;

      /**
       * BINARY_OP_TYPE_UNSPECIFIED = 0;
       */
      public static final int BINARY_OP_TYPE_UNSPECIFIED_VALUE = 0;
      /**
       * BINARY_OP_TYPE_PLUS = 1;
       */
      public static final int BINARY_OP_TYPE_PLUS_VALUE = 1;
      /**
       * BINARY_OP_TYPE_MINUS = 2;
       */
      public static final int BINARY_OP_TYPE_MINUS_VALUE = 2;
      /**
       * BINARY_OP_TYPE_MULTIPLY = 3;
       */
      public static final int BINARY_OP_TYPE_MULTIPLY_VALUE = 3;
      /**
       * BINARY_OP_TYPE_DIVIDE = 4;
       */
      public static final int BINARY_OP_TYPE_DIVIDE_VALUE = 4;
      /**
       * BINARY_OP_TYPE_MIN = 5;
       */
      public static final int BINARY_OP_TYPE_MIN_VALUE = 5;
      /**
       * BINARY_OP_TYPE_MAX = 6;
       */
      public static final int BINARY_OP_TYPE_MAX_VALUE = 6;
      /**
       * BINARY_OP_TYPE_GREATER_THAN = 7;
       */
      public static final int BINARY_OP_TYPE_GREATER_THAN_VALUE = 7;
      /**
       * BINARY_OP_TYPE_LESS_THAN = 8;
       */
      public static final int BINARY_OP_TYPE_LESS_THAN_VALUE = 8;
      /**
       * BINARY_OP_TYPE_AND = 9;
       */
      public static final int BINARY_OP_TYPE_AND_VALUE = 9;
      /**
       * BINARY_OP_TYPE_OR = 10;
       */
      public static final int BINARY_OP_TYPE_OR_VALUE = 10;
      /**
       * BINARY_OP_TYPE_EQUALS = 11;
       */
      public static final int BINARY_OP_TYPE_EQUALS_VALUE = 11;
      /**
       * BINARY_OP_TYPE_COVERS = 12;
       */
      public static final int BINARY_OP_TYPE_COVERS_VALUE = 12;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        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 BinaryOpType 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 BinaryOpType forNumber(int value) {
        switch (value) {
          case 0: return BINARY_OP_TYPE_UNSPECIFIED;
          case 1: return BINARY_OP_TYPE_PLUS;
          case 2: return BINARY_OP_TYPE_MINUS;
          case 3: return BINARY_OP_TYPE_MULTIPLY;
          case 4: return BINARY_OP_TYPE_DIVIDE;
          case 5: return BINARY_OP_TYPE_MIN;
          case 6: return BINARY_OP_TYPE_MAX;
          case 7: return BINARY_OP_TYPE_GREATER_THAN;
          case 8: return BINARY_OP_TYPE_LESS_THAN;
          case 9: return BINARY_OP_TYPE_AND;
          case 10: return BINARY_OP_TYPE_OR;
          case 11: return BINARY_OP_TYPE_EQUALS;
          case 12: return BINARY_OP_TYPE_COVERS;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          BinaryOpType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap() {
              public BinaryOpType findValueByNumber(int number) {
                return BinaryOpType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        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 io.substrait.proto.DerivationExpression.BinaryOp.getDescriptor().getEnumTypes().get(0);
      }

      private static final BinaryOpType[] VALUES = values();

      public static BinaryOpType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private BinaryOpType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:substrait.DerivationExpression.BinaryOp.BinaryOpType)
    }

    private int bitField0_;
    public static final int OP_TYPE_FIELD_NUMBER = 1;
    private int opType_ = 0;
    /**
     * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
     * @return The enum numeric value on the wire for opType.
     */
    @java.lang.Override public int getOpTypeValue() {
      return opType_;
    }
    /**
     * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
     * @return The opType.
     */
    @java.lang.Override public io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType getOpType() {
      io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType result = io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.forNumber(opType_);
      return result == null ? io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.UNRECOGNIZED : result;
    }

    public static final int ARG1_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression arg1_;
    /**
     * .substrait.DerivationExpression arg1 = 2;
     * @return Whether the arg1 field is set.
     */
    @java.lang.Override
    public boolean hasArg1() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression arg1 = 2;
     * @return The arg1.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getArg1() {
      return arg1_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg1_;
    }
    /**
     * .substrait.DerivationExpression arg1 = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getArg1OrBuilder() {
      return arg1_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg1_;
    }

    public static final int ARG2_FIELD_NUMBER = 3;
    private io.substrait.proto.DerivationExpression arg2_;
    /**
     * .substrait.DerivationExpression arg2 = 3;
     * @return Whether the arg2 field is set.
     */
    @java.lang.Override
    public boolean hasArg2() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .substrait.DerivationExpression arg2 = 3;
     * @return The arg2.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getArg2() {
      return arg2_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg2_;
    }
    /**
     * .substrait.DerivationExpression arg2 = 3;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getArg2OrBuilder() {
      return arg2_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg2_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (opType_ != io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.BINARY_OP_TYPE_UNSPECIFIED.getNumber()) {
        output.writeEnum(1, opType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getArg1());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(3, getArg2());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (opType_ != io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.BINARY_OP_TYPE_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, opType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getArg1());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getArg2());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.BinaryOp)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.BinaryOp other = (io.substrait.proto.DerivationExpression.BinaryOp) obj;

      if (opType_ != other.opType_) return false;
      if (hasArg1() != other.hasArg1()) return false;
      if (hasArg1()) {
        if (!getArg1()
            .equals(other.getArg1())) return false;
      }
      if (hasArg2() != other.hasArg2()) return false;
      if (hasArg2()) {
        if (!getArg2()
            .equals(other.getArg2())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + OP_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + opType_;
      if (hasArg1()) {
        hash = (37 * hash) + ARG1_FIELD_NUMBER;
        hash = (53 * hash) + getArg1().hashCode();
      }
      if (hasArg2()) {
        hash = (37 * hash) + ARG2_FIELD_NUMBER;
        hash = (53 * hash) + getArg2().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp 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 io.substrait.proto.DerivationExpression.BinaryOp parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.BinaryOp 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 io.substrait.proto.DerivationExpression.BinaryOp parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.BinaryOp 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(io.substrait.proto.DerivationExpression.BinaryOp 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 substrait.DerivationExpression.BinaryOp}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.BinaryOp)
        io.substrait.proto.DerivationExpression.BinaryOpOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_BinaryOp_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_BinaryOp_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.BinaryOp.class, io.substrait.proto.DerivationExpression.BinaryOp.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.BinaryOp.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArg1FieldBuilder();
          getArg2FieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        opType_ = 0;
        arg1_ = null;
        if (arg1Builder_ != null) {
          arg1Builder_.dispose();
          arg1Builder_ = null;
        }
        arg2_ = null;
        if (arg2Builder_ != null) {
          arg2Builder_.dispose();
          arg2Builder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_BinaryOp_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.BinaryOp getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.BinaryOp build() {
        io.substrait.proto.DerivationExpression.BinaryOp result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.BinaryOp buildPartial() {
        io.substrait.proto.DerivationExpression.BinaryOp result = new io.substrait.proto.DerivationExpression.BinaryOp(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.BinaryOp result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.opType_ = opType_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.arg1_ = arg1Builder_ == null
              ? arg1_
              : arg1Builder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.arg2_ = arg2Builder_ == null
              ? arg2_
              : arg2Builder_.build();
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.BinaryOp) {
          return mergeFrom((io.substrait.proto.DerivationExpression.BinaryOp)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.BinaryOp other) {
        if (other == io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance()) return this;
        if (other.opType_ != 0) {
          setOpTypeValue(other.getOpTypeValue());
        }
        if (other.hasArg1()) {
          mergeArg1(other.getArg1());
        }
        if (other.hasArg2()) {
          mergeArg2(other.getArg2());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                opType_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                input.readMessage(
                    getArg1FieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getArg2FieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int opType_ = 0;
      /**
       * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
       * @return The enum numeric value on the wire for opType.
       */
      @java.lang.Override public int getOpTypeValue() {
        return opType_;
      }
      /**
       * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
       * @param value The enum numeric value on the wire for opType to set.
       * @return This builder for chaining.
       */
      public Builder setOpTypeValue(int value) {
        opType_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
       * @return The opType.
       */
      @java.lang.Override
      public io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType getOpType() {
        io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType result = io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.forNumber(opType_);
        return result == null ? io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType.UNRECOGNIZED : result;
      }
      /**
       * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
       * @param value The opType to set.
       * @return This builder for chaining.
       */
      public Builder setOpType(io.substrait.proto.DerivationExpression.BinaryOp.BinaryOpType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        opType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression.BinaryOp.BinaryOpType op_type = 1;
       * @return This builder for chaining.
       */
      public Builder clearOpType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        opType_ = 0;
        onChanged();
        return this;
      }

      private io.substrait.proto.DerivationExpression arg1_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> arg1Builder_;
      /**
       * .substrait.DerivationExpression arg1 = 2;
       * @return Whether the arg1 field is set.
       */
      public boolean hasArg1() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       * @return The arg1.
       */
      public io.substrait.proto.DerivationExpression getArg1() {
        if (arg1Builder_ == null) {
          return arg1_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg1_;
        } else {
          return arg1Builder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public Builder setArg1(io.substrait.proto.DerivationExpression value) {
        if (arg1Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          arg1_ = value;
        } else {
          arg1Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public Builder setArg1(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (arg1Builder_ == null) {
          arg1_ = builderForValue.build();
        } else {
          arg1Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public Builder mergeArg1(io.substrait.proto.DerivationExpression value) {
        if (arg1Builder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            arg1_ != null &&
            arg1_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getArg1Builder().mergeFrom(value);
          } else {
            arg1_ = value;
          }
        } else {
          arg1Builder_.mergeFrom(value);
        }
        if (arg1_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public Builder clearArg1() {
        bitField0_ = (bitField0_ & ~0x00000002);
        arg1_ = null;
        if (arg1Builder_ != null) {
          arg1Builder_.dispose();
          arg1Builder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getArg1Builder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getArg1FieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getArg1OrBuilder() {
        if (arg1Builder_ != null) {
          return arg1Builder_.getMessageOrBuilder();
        } else {
          return arg1_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : arg1_;
        }
      }
      /**
       * .substrait.DerivationExpression arg1 = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getArg1FieldBuilder() {
        if (arg1Builder_ == null) {
          arg1Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getArg1(),
                  getParentForChildren(),
                  isClean());
          arg1_ = null;
        }
        return arg1Builder_;
      }

      private io.substrait.proto.DerivationExpression arg2_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> arg2Builder_;
      /**
       * .substrait.DerivationExpression arg2 = 3;
       * @return Whether the arg2 field is set.
       */
      public boolean hasArg2() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       * @return The arg2.
       */
      public io.substrait.proto.DerivationExpression getArg2() {
        if (arg2Builder_ == null) {
          return arg2_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : arg2_;
        } else {
          return arg2Builder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public Builder setArg2(io.substrait.proto.DerivationExpression value) {
        if (arg2Builder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          arg2_ = value;
        } else {
          arg2Builder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public Builder setArg2(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (arg2Builder_ == null) {
          arg2_ = builderForValue.build();
        } else {
          arg2Builder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public Builder mergeArg2(io.substrait.proto.DerivationExpression value) {
        if (arg2Builder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            arg2_ != null &&
            arg2_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getArg2Builder().mergeFrom(value);
          } else {
            arg2_ = value;
          }
        } else {
          arg2Builder_.mergeFrom(value);
        }
        if (arg2_ != null) {
          bitField0_ |= 0x00000004;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public Builder clearArg2() {
        bitField0_ = (bitField0_ & ~0x00000004);
        arg2_ = null;
        if (arg2Builder_ != null) {
          arg2Builder_.dispose();
          arg2Builder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public io.substrait.proto.DerivationExpression.Builder getArg2Builder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getArg2FieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getArg2OrBuilder() {
        if (arg2Builder_ != null) {
          return arg2Builder_.getMessageOrBuilder();
        } else {
          return arg2_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : arg2_;
        }
      }
      /**
       * .substrait.DerivationExpression arg2 = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getArg2FieldBuilder() {
        if (arg2Builder_ == null) {
          arg2Builder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getArg2(),
                  getParentForChildren(),
                  isClean());
          arg2_ = null;
        }
        return arg2Builder_;
      }
      @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:substrait.DerivationExpression.BinaryOp)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.BinaryOp)
    private static final io.substrait.proto.DerivationExpression.BinaryOp DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.BinaryOp();
    }

    public static io.substrait.proto.DerivationExpression.BinaryOp getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public BinaryOp parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.BinaryOp getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ReturnProgramOrBuilder extends
      // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ReturnProgram)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    java.util.List 
        getAssignmentsList();
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getAssignments(int index);
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    int getAssignmentsCount();
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    java.util.List 
        getAssignmentsOrBuilderList();
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder getAssignmentsOrBuilder(
        int index);

    /**
     * .substrait.DerivationExpression final_expression = 2;
     * @return Whether the finalExpression field is set.
     */
    boolean hasFinalExpression();
    /**
     * .substrait.DerivationExpression final_expression = 2;
     * @return The finalExpression.
     */
    io.substrait.proto.DerivationExpression getFinalExpression();
    /**
     * .substrait.DerivationExpression final_expression = 2;
     */
    io.substrait.proto.DerivationExpressionOrBuilder getFinalExpressionOrBuilder();
  }
  /**
   * Protobuf type {@code substrait.DerivationExpression.ReturnProgram}
   */
  public static final class ReturnProgram extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ReturnProgram)
      ReturnProgramOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ReturnProgram.newBuilder() to construct.
    private ReturnProgram(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ReturnProgram() {
      assignments_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ReturnProgram();
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.substrait.proto.DerivationExpression.ReturnProgram.class, io.substrait.proto.DerivationExpression.ReturnProgram.Builder.class);
    }

    public interface AssignmentOrBuilder extends
        // @@protoc_insertion_point(interface_extends:substrait.DerivationExpression.ReturnProgram.Assignment)
        com.google.protobuf.MessageOrBuilder {

      /**
       * string name = 1;
       * @return The name.
       */
      java.lang.String getName();
      /**
       * string name = 1;
       * @return The bytes for name.
       */
      com.google.protobuf.ByteString
          getNameBytes();

      /**
       * .substrait.DerivationExpression expression = 2;
       * @return Whether the expression field is set.
       */
      boolean hasExpression();
      /**
       * .substrait.DerivationExpression expression = 2;
       * @return The expression.
       */
      io.substrait.proto.DerivationExpression getExpression();
      /**
       * .substrait.DerivationExpression expression = 2;
       */
      io.substrait.proto.DerivationExpressionOrBuilder getExpressionOrBuilder();
    }
    /**
     * Protobuf type {@code substrait.DerivationExpression.ReturnProgram.Assignment}
     */
    public static final class Assignment extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:substrait.DerivationExpression.ReturnProgram.Assignment)
        AssignmentOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use Assignment.newBuilder() to construct.
      private Assignment(com.google.protobuf.GeneratedMessageV3.Builder builder) {
        super(builder);
      }
      private Assignment() {
        name_ = "";
      }

      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new Assignment();
      }

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_Assignment_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_Assignment_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.class, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder.class);
      }

      private int bitField0_;
      public static final int NAME_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object name_ = "";
      /**
       * string name = 1;
       * @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();
          name_ = s;
          return s;
        }
      }
      /**
       * string name = 1;
       * @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 EXPRESSION_FIELD_NUMBER = 2;
      private io.substrait.proto.DerivationExpression expression_;
      /**
       * .substrait.DerivationExpression expression = 2;
       * @return Whether the expression field is set.
       */
      @java.lang.Override
      public boolean hasExpression() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .substrait.DerivationExpression expression = 2;
       * @return The expression.
       */
      @java.lang.Override
      public io.substrait.proto.DerivationExpression getExpression() {
        return expression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : expression_;
      }
      /**
       * .substrait.DerivationExpression expression = 2;
       */
      @java.lang.Override
      public io.substrait.proto.DerivationExpressionOrBuilder getExpressionOrBuilder() {
        return expression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : expression_;
      }

      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          output.writeMessage(2, getExpression());
        }
        getUnknownFields().writeTo(output);
      }

      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
        }
        if (((bitField0_ & 0x00000001) != 0)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getExpression());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof io.substrait.proto.DerivationExpression.ReturnProgram.Assignment)) {
          return super.equals(obj);
        }
        io.substrait.proto.DerivationExpression.ReturnProgram.Assignment other = (io.substrait.proto.DerivationExpression.ReturnProgram.Assignment) obj;

        if (!getName()
            .equals(other.getName())) return false;
        if (hasExpression() != other.hasExpression()) return false;
        if (hasExpression()) {
          if (!getExpression()
              .equals(other.getExpression())) return false;
        }
        if (!getUnknownFields().equals(other.getUnknownFields())) return false;
        return true;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + NAME_FIELD_NUMBER;
        hash = (53 * hash) + getName().hashCode();
        if (hasExpression()) {
          hash = (37 * hash) + EXPRESSION_FIELD_NUMBER;
          hash = (53 * hash) + getExpression().hashCode();
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment 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 io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment 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 io.substrait.proto.DerivationExpression.ReturnProgram.Assignment parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment 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(io.substrait.proto.DerivationExpression.ReturnProgram.Assignment 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 substrait.DerivationExpression.ReturnProgram.Assignment}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ReturnProgram.Assignment)
          io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_Assignment_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_Assignment_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.class, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder.class);
        }

        // Construct using io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getExpressionFieldBuilder();
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          bitField0_ = 0;
          name_ = "";
          expression_ = null;
          if (expressionBuilder_ != null) {
            expressionBuilder_.dispose();
            expressionBuilder_ = null;
          }
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_Assignment_descriptor;
        }

        @java.lang.Override
        public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getDefaultInstanceForType() {
          return io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.getDefaultInstance();
        }

        @java.lang.Override
        public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment build() {
          io.substrait.proto.DerivationExpression.ReturnProgram.Assignment result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment buildPartial() {
          io.substrait.proto.DerivationExpression.ReturnProgram.Assignment result = new io.substrait.proto.DerivationExpression.ReturnProgram.Assignment(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(io.substrait.proto.DerivationExpression.ReturnProgram.Assignment result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.name_ = name_;
          }
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.expression_ = expressionBuilder_ == null
                ? expression_
                : expressionBuilder_.build();
            to_bitField0_ |= 0x00000001;
          }
          result.bitField0_ |= to_bitField0_;
        }

        @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 io.substrait.proto.DerivationExpression.ReturnProgram.Assignment) {
            return mergeFrom((io.substrait.proto.DerivationExpression.ReturnProgram.Assignment)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(io.substrait.proto.DerivationExpression.ReturnProgram.Assignment other) {
          if (other == io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.getDefaultInstance()) return this;
          if (!other.getName().isEmpty()) {
            name_ = other.name_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (other.hasExpression()) {
            mergeExpression(other.getExpression());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }

        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          if (extensionRegistry == null) {
            throw new java.lang.NullPointerException();
          }
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                case 10: {
                  name_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getExpressionFieldBuilder().getBuilder(),
                      extensionRegistry);
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int bitField0_;

        private java.lang.Object name_ = "";
        /**
         * string name = 1;
         * @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();
            name_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * string name = 1;
         * @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;
          }
        }
        /**
         * string name = 1;
         * @param value The name to set.
         * @return This builder for chaining.
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          name_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * string name = 1;
         * @return This builder for chaining.
         */
        public Builder clearName() {
          name_ = getDefaultInstance().getName();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * string name = 1;
         * @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(); }
          checkByteStringIsUtf8(value);
          name_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private io.substrait.proto.DerivationExpression expression_;
        private com.google.protobuf.SingleFieldBuilderV3<
            io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> expressionBuilder_;
        /**
         * .substrait.DerivationExpression expression = 2;
         * @return Whether the expression field is set.
         */
        public boolean hasExpression() {
          return ((bitField0_ & 0x00000002) != 0);
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         * @return The expression.
         */
        public io.substrait.proto.DerivationExpression getExpression() {
          if (expressionBuilder_ == null) {
            return expression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : expression_;
          } else {
            return expressionBuilder_.getMessage();
          }
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public Builder setExpression(io.substrait.proto.DerivationExpression value) {
          if (expressionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            expression_ = value;
          } else {
            expressionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public Builder setExpression(
            io.substrait.proto.DerivationExpression.Builder builderForValue) {
          if (expressionBuilder_ == null) {
            expression_ = builderForValue.build();
          } else {
            expressionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public Builder mergeExpression(io.substrait.proto.DerivationExpression value) {
          if (expressionBuilder_ == null) {
            if (((bitField0_ & 0x00000002) != 0) &&
              expression_ != null &&
              expression_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
              getExpressionBuilder().mergeFrom(value);
            } else {
              expression_ = value;
            }
          } else {
            expressionBuilder_.mergeFrom(value);
          }
          if (expression_ != null) {
            bitField0_ |= 0x00000002;
            onChanged();
          }
          return this;
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public Builder clearExpression() {
          bitField0_ = (bitField0_ & ~0x00000002);
          expression_ = null;
          if (expressionBuilder_ != null) {
            expressionBuilder_.dispose();
            expressionBuilder_ = null;
          }
          onChanged();
          return this;
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public io.substrait.proto.DerivationExpression.Builder getExpressionBuilder() {
          bitField0_ |= 0x00000002;
          onChanged();
          return getExpressionFieldBuilder().getBuilder();
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        public io.substrait.proto.DerivationExpressionOrBuilder getExpressionOrBuilder() {
          if (expressionBuilder_ != null) {
            return expressionBuilder_.getMessageOrBuilder();
          } else {
            return expression_ == null ?
                io.substrait.proto.DerivationExpression.getDefaultInstance() : expression_;
          }
        }
        /**
         * .substrait.DerivationExpression expression = 2;
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
            getExpressionFieldBuilder() {
          if (expressionBuilder_ == null) {
            expressionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                    getExpression(),
                    getParentForChildren(),
                    isClean());
            expression_ = null;
          }
          return expressionBuilder_;
        }
        @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:substrait.DerivationExpression.ReturnProgram.Assignment)
      }

      // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ReturnProgram.Assignment)
      private static final io.substrait.proto.DerivationExpression.ReturnProgram.Assignment DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ReturnProgram.Assignment();
      }

      public static io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public Assignment parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }

      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int bitField0_;
    public static final int ASSIGNMENTS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List assignments_;
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    @java.lang.Override
    public java.util.List getAssignmentsList() {
      return assignments_;
    }
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    @java.lang.Override
    public java.util.List 
        getAssignmentsOrBuilderList() {
      return assignments_;
    }
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    @java.lang.Override
    public int getAssignmentsCount() {
      return assignments_.size();
    }
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getAssignments(int index) {
      return assignments_.get(index);
    }
    /**
     * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder getAssignmentsOrBuilder(
        int index) {
      return assignments_.get(index);
    }

    public static final int FINAL_EXPRESSION_FIELD_NUMBER = 2;
    private io.substrait.proto.DerivationExpression finalExpression_;
    /**
     * .substrait.DerivationExpression final_expression = 2;
     * @return Whether the finalExpression field is set.
     */
    @java.lang.Override
    public boolean hasFinalExpression() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .substrait.DerivationExpression final_expression = 2;
     * @return The finalExpression.
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpression getFinalExpression() {
      return finalExpression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : finalExpression_;
    }
    /**
     * .substrait.DerivationExpression final_expression = 2;
     */
    @java.lang.Override
    public io.substrait.proto.DerivationExpressionOrBuilder getFinalExpressionOrBuilder() {
      return finalExpression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : finalExpression_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 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 < assignments_.size(); i++) {
        output.writeMessage(1, assignments_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(2, getFinalExpression());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < assignments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, assignments_.get(i));
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getFinalExpression());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.substrait.proto.DerivationExpression.ReturnProgram)) {
        return super.equals(obj);
      }
      io.substrait.proto.DerivationExpression.ReturnProgram other = (io.substrait.proto.DerivationExpression.ReturnProgram) obj;

      if (!getAssignmentsList()
          .equals(other.getAssignmentsList())) return false;
      if (hasFinalExpression() != other.hasFinalExpression()) return false;
      if (hasFinalExpression()) {
        if (!getFinalExpression()
            .equals(other.getFinalExpression())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAssignmentsCount() > 0) {
        hash = (37 * hash) + ASSIGNMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getAssignmentsList().hashCode();
      }
      if (hasFinalExpression()) {
        hash = (37 * hash) + FINAL_EXPRESSION_FIELD_NUMBER;
        hash = (53 * hash) + getFinalExpression().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram 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 io.substrait.proto.DerivationExpression.ReturnProgram parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static io.substrait.proto.DerivationExpression.ReturnProgram 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 io.substrait.proto.DerivationExpression.ReturnProgram parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.substrait.proto.DerivationExpression.ReturnProgram 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(io.substrait.proto.DerivationExpression.ReturnProgram 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 substrait.DerivationExpression.ReturnProgram}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression.ReturnProgram)
        io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.substrait.proto.DerivationExpression.ReturnProgram.class, io.substrait.proto.DerivationExpression.ReturnProgram.Builder.class);
      }

      // Construct using io.substrait.proto.DerivationExpression.ReturnProgram.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getAssignmentsFieldBuilder();
          getFinalExpressionFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (assignmentsBuilder_ == null) {
          assignments_ = java.util.Collections.emptyList();
        } else {
          assignments_ = null;
          assignmentsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        finalExpression_ = null;
        if (finalExpressionBuilder_ != null) {
          finalExpressionBuilder_.dispose();
          finalExpressionBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_ReturnProgram_descriptor;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ReturnProgram getDefaultInstanceForType() {
        return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance();
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ReturnProgram build() {
        io.substrait.proto.DerivationExpression.ReturnProgram result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.substrait.proto.DerivationExpression.ReturnProgram buildPartial() {
        io.substrait.proto.DerivationExpression.ReturnProgram result = new io.substrait.proto.DerivationExpression.ReturnProgram(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(io.substrait.proto.DerivationExpression.ReturnProgram result) {
        if (assignmentsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            assignments_ = java.util.Collections.unmodifiableList(assignments_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.assignments_ = assignments_;
        } else {
          result.assignments_ = assignmentsBuilder_.build();
        }
      }

      private void buildPartial0(io.substrait.proto.DerivationExpression.ReturnProgram result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.finalExpression_ = finalExpressionBuilder_ == null
              ? finalExpression_
              : finalExpressionBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @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 io.substrait.proto.DerivationExpression.ReturnProgram) {
          return mergeFrom((io.substrait.proto.DerivationExpression.ReturnProgram)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.substrait.proto.DerivationExpression.ReturnProgram other) {
        if (other == io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance()) return this;
        if (assignmentsBuilder_ == null) {
          if (!other.assignments_.isEmpty()) {
            if (assignments_.isEmpty()) {
              assignments_ = other.assignments_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAssignmentsIsMutable();
              assignments_.addAll(other.assignments_);
            }
            onChanged();
          }
        } else {
          if (!other.assignments_.isEmpty()) {
            if (assignmentsBuilder_.isEmpty()) {
              assignmentsBuilder_.dispose();
              assignmentsBuilder_ = null;
              assignments_ = other.assignments_;
              bitField0_ = (bitField0_ & ~0x00000001);
              assignmentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAssignmentsFieldBuilder() : null;
            } else {
              assignmentsBuilder_.addAllMessages(other.assignments_);
            }
          }
        }
        if (other.hasFinalExpression()) {
          mergeFinalExpression(other.getFinalExpression());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                io.substrait.proto.DerivationExpression.ReturnProgram.Assignment m =
                    input.readMessage(
                        io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.parser(),
                        extensionRegistry);
                if (assignmentsBuilder_ == null) {
                  ensureAssignmentsIsMutable();
                  assignments_.add(m);
                } else {
                  assignmentsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getFinalExpressionFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List assignments_ =
        java.util.Collections.emptyList();
      private void ensureAssignmentsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          assignments_ = new java.util.ArrayList(assignments_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.substrait.proto.DerivationExpression.ReturnProgram.Assignment, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder, io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder> assignmentsBuilder_;

      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public java.util.List getAssignmentsList() {
        if (assignmentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(assignments_);
        } else {
          return assignmentsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public int getAssignmentsCount() {
        if (assignmentsBuilder_ == null) {
          return assignments_.size();
        } else {
          return assignmentsBuilder_.getCount();
        }
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment getAssignments(int index) {
        if (assignmentsBuilder_ == null) {
          return assignments_.get(index);
        } else {
          return assignmentsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder setAssignments(
          int index, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment value) {
        if (assignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssignmentsIsMutable();
          assignments_.set(index, value);
          onChanged();
        } else {
          assignmentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder setAssignments(
          int index, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder builderForValue) {
        if (assignmentsBuilder_ == null) {
          ensureAssignmentsIsMutable();
          assignments_.set(index, builderForValue.build());
          onChanged();
        } else {
          assignmentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder addAssignments(io.substrait.proto.DerivationExpression.ReturnProgram.Assignment value) {
        if (assignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssignmentsIsMutable();
          assignments_.add(value);
          onChanged();
        } else {
          assignmentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder addAssignments(
          int index, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment value) {
        if (assignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAssignmentsIsMutable();
          assignments_.add(index, value);
          onChanged();
        } else {
          assignmentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder addAssignments(
          io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder builderForValue) {
        if (assignmentsBuilder_ == null) {
          ensureAssignmentsIsMutable();
          assignments_.add(builderForValue.build());
          onChanged();
        } else {
          assignmentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder addAssignments(
          int index, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder builderForValue) {
        if (assignmentsBuilder_ == null) {
          ensureAssignmentsIsMutable();
          assignments_.add(index, builderForValue.build());
          onChanged();
        } else {
          assignmentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder addAllAssignments(
          java.lang.Iterable values) {
        if (assignmentsBuilder_ == null) {
          ensureAssignmentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, assignments_);
          onChanged();
        } else {
          assignmentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder clearAssignments() {
        if (assignmentsBuilder_ == null) {
          assignments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          assignmentsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public Builder removeAssignments(int index) {
        if (assignmentsBuilder_ == null) {
          ensureAssignmentsIsMutable();
          assignments_.remove(index);
          onChanged();
        } else {
          assignmentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder getAssignmentsBuilder(
          int index) {
        return getAssignmentsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder getAssignmentsOrBuilder(
          int index) {
        if (assignmentsBuilder_ == null) {
          return assignments_.get(index);  } else {
          return assignmentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public java.util.List 
           getAssignmentsOrBuilderList() {
        if (assignmentsBuilder_ != null) {
          return assignmentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(assignments_);
        }
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder addAssignmentsBuilder() {
        return getAssignmentsFieldBuilder().addBuilder(
            io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.getDefaultInstance());
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder addAssignmentsBuilder(
          int index) {
        return getAssignmentsFieldBuilder().addBuilder(
            index, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.getDefaultInstance());
      }
      /**
       * repeated .substrait.DerivationExpression.ReturnProgram.Assignment assignments = 1;
       */
      public java.util.List 
           getAssignmentsBuilderList() {
        return getAssignmentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.substrait.proto.DerivationExpression.ReturnProgram.Assignment, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder, io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder> 
          getAssignmentsFieldBuilder() {
        if (assignmentsBuilder_ == null) {
          assignmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.substrait.proto.DerivationExpression.ReturnProgram.Assignment, io.substrait.proto.DerivationExpression.ReturnProgram.Assignment.Builder, io.substrait.proto.DerivationExpression.ReturnProgram.AssignmentOrBuilder>(
                  assignments_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          assignments_ = null;
        }
        return assignmentsBuilder_;
      }

      private io.substrait.proto.DerivationExpression finalExpression_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> finalExpressionBuilder_;
      /**
       * .substrait.DerivationExpression final_expression = 2;
       * @return Whether the finalExpression field is set.
       */
      public boolean hasFinalExpression() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       * @return The finalExpression.
       */
      public io.substrait.proto.DerivationExpression getFinalExpression() {
        if (finalExpressionBuilder_ == null) {
          return finalExpression_ == null ? io.substrait.proto.DerivationExpression.getDefaultInstance() : finalExpression_;
        } else {
          return finalExpressionBuilder_.getMessage();
        }
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public Builder setFinalExpression(io.substrait.proto.DerivationExpression value) {
        if (finalExpressionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          finalExpression_ = value;
        } else {
          finalExpressionBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public Builder setFinalExpression(
          io.substrait.proto.DerivationExpression.Builder builderForValue) {
        if (finalExpressionBuilder_ == null) {
          finalExpression_ = builderForValue.build();
        } else {
          finalExpressionBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public Builder mergeFinalExpression(io.substrait.proto.DerivationExpression value) {
        if (finalExpressionBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0) &&
            finalExpression_ != null &&
            finalExpression_ != io.substrait.proto.DerivationExpression.getDefaultInstance()) {
            getFinalExpressionBuilder().mergeFrom(value);
          } else {
            finalExpression_ = value;
          }
        } else {
          finalExpressionBuilder_.mergeFrom(value);
        }
        if (finalExpression_ != null) {
          bitField0_ |= 0x00000002;
          onChanged();
        }
        return this;
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public Builder clearFinalExpression() {
        bitField0_ = (bitField0_ & ~0x00000002);
        finalExpression_ = null;
        if (finalExpressionBuilder_ != null) {
          finalExpressionBuilder_.dispose();
          finalExpressionBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public io.substrait.proto.DerivationExpression.Builder getFinalExpressionBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getFinalExpressionFieldBuilder().getBuilder();
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      public io.substrait.proto.DerivationExpressionOrBuilder getFinalExpressionOrBuilder() {
        if (finalExpressionBuilder_ != null) {
          return finalExpressionBuilder_.getMessageOrBuilder();
        } else {
          return finalExpression_ == null ?
              io.substrait.proto.DerivationExpression.getDefaultInstance() : finalExpression_;
        }
      }
      /**
       * .substrait.DerivationExpression final_expression = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder> 
          getFinalExpressionFieldBuilder() {
        if (finalExpressionBuilder_ == null) {
          finalExpressionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.substrait.proto.DerivationExpression, io.substrait.proto.DerivationExpression.Builder, io.substrait.proto.DerivationExpressionOrBuilder>(
                  getFinalExpression(),
                  getParentForChildren(),
                  isClean());
          finalExpression_ = null;
        }
        return finalExpressionBuilder_;
      }
      @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:substrait.DerivationExpression.ReturnProgram)
    }

    // @@protoc_insertion_point(class_scope:substrait.DerivationExpression.ReturnProgram)
    private static final io.substrait.proto.DerivationExpression.ReturnProgram DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression.ReturnProgram();
    }

    public static io.substrait.proto.DerivationExpression.ReturnProgram getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ReturnProgram parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.substrait.proto.DerivationExpression.ReturnProgram getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private int kindCase_ = 0;
  @SuppressWarnings("serial")
  private java.lang.Object kind_;
  public enum KindCase
      implements com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    BOOL(1),
    I8(2),
    I16(3),
    I32(5),
    I64(7),
    FP32(10),
    FP64(11),
    STRING(12),
    BINARY(13),
    @java.lang.Deprecated TIMESTAMP(14),
    DATE(16),
    TIME(17),
    INTERVAL_YEAR(19),
    @java.lang.Deprecated TIMESTAMP_TZ(29),
    UUID(32),
    INTERVAL_DAY(20),
    INTERVAL_COMPOUND(42),
    FIXED_CHAR(21),
    VARCHAR(22),
    FIXED_BINARY(23),
    DECIMAL(24),
    PRECISION_TIMESTAMP(40),
    PRECISION_TIMESTAMP_TZ(41),
    STRUCT(25),
    LIST(27),
    MAP(28),
    USER_DEFINED(30),
    @java.lang.Deprecated USER_DEFINED_POINTER(31),
    TYPE_PARAMETER_NAME(33),
    INTEGER_PARAMETER_NAME(34),
    INTEGER_LITERAL(35),
    UNARY_OP(36),
    BINARY_OP(37),
    IF_ELSE(38),
    RETURN_PROGRAM(39),
    KIND_NOT_SET(0);
    private final int value;
    private KindCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static KindCase valueOf(int value) {
      return forNumber(value);
    }

    public static KindCase forNumber(int value) {
      switch (value) {
        case 1: return BOOL;
        case 2: return I8;
        case 3: return I16;
        case 5: return I32;
        case 7: return I64;
        case 10: return FP32;
        case 11: return FP64;
        case 12: return STRING;
        case 13: return BINARY;
        case 14: return TIMESTAMP;
        case 16: return DATE;
        case 17: return TIME;
        case 19: return INTERVAL_YEAR;
        case 29: return TIMESTAMP_TZ;
        case 32: return UUID;
        case 20: return INTERVAL_DAY;
        case 42: return INTERVAL_COMPOUND;
        case 21: return FIXED_CHAR;
        case 22: return VARCHAR;
        case 23: return FIXED_BINARY;
        case 24: return DECIMAL;
        case 40: return PRECISION_TIMESTAMP;
        case 41: return PRECISION_TIMESTAMP_TZ;
        case 25: return STRUCT;
        case 27: return LIST;
        case 28: return MAP;
        case 30: return USER_DEFINED;
        case 31: return USER_DEFINED_POINTER;
        case 33: return TYPE_PARAMETER_NAME;
        case 34: return INTEGER_PARAMETER_NAME;
        case 35: return INTEGER_LITERAL;
        case 36: return UNARY_OP;
        case 37: return BINARY_OP;
        case 38: return IF_ELSE;
        case 39: return RETURN_PROGRAM;
        case 0: return KIND_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public KindCase
  getKindCase() {
    return KindCase.forNumber(
        kindCase_);
  }

  public static final int BOOL_FIELD_NUMBER = 1;
  /**
   * .substrait.Type.Boolean bool = 1;
   * @return Whether the bool field is set.
   */
  @java.lang.Override
  public boolean hasBool() {
    return kindCase_ == 1;
  }
  /**
   * .substrait.Type.Boolean bool = 1;
   * @return The bool.
   */
  @java.lang.Override
  public io.substrait.proto.Type.Boolean getBool() {
    if (kindCase_ == 1) {
       return (io.substrait.proto.Type.Boolean) kind_;
    }
    return io.substrait.proto.Type.Boolean.getDefaultInstance();
  }
  /**
   * .substrait.Type.Boolean bool = 1;
   */
  @java.lang.Override
  public io.substrait.proto.Type.BooleanOrBuilder getBoolOrBuilder() {
    if (kindCase_ == 1) {
       return (io.substrait.proto.Type.Boolean) kind_;
    }
    return io.substrait.proto.Type.Boolean.getDefaultInstance();
  }

  public static final int I8_FIELD_NUMBER = 2;
  /**
   * .substrait.Type.I8 i8 = 2;
   * @return Whether the i8 field is set.
   */
  @java.lang.Override
  public boolean hasI8() {
    return kindCase_ == 2;
  }
  /**
   * .substrait.Type.I8 i8 = 2;
   * @return The i8.
   */
  @java.lang.Override
  public io.substrait.proto.Type.I8 getI8() {
    if (kindCase_ == 2) {
       return (io.substrait.proto.Type.I8) kind_;
    }
    return io.substrait.proto.Type.I8.getDefaultInstance();
  }
  /**
   * .substrait.Type.I8 i8 = 2;
   */
  @java.lang.Override
  public io.substrait.proto.Type.I8OrBuilder getI8OrBuilder() {
    if (kindCase_ == 2) {
       return (io.substrait.proto.Type.I8) kind_;
    }
    return io.substrait.proto.Type.I8.getDefaultInstance();
  }

  public static final int I16_FIELD_NUMBER = 3;
  /**
   * .substrait.Type.I16 i16 = 3;
   * @return Whether the i16 field is set.
   */
  @java.lang.Override
  public boolean hasI16() {
    return kindCase_ == 3;
  }
  /**
   * .substrait.Type.I16 i16 = 3;
   * @return The i16.
   */
  @java.lang.Override
  public io.substrait.proto.Type.I16 getI16() {
    if (kindCase_ == 3) {
       return (io.substrait.proto.Type.I16) kind_;
    }
    return io.substrait.proto.Type.I16.getDefaultInstance();
  }
  /**
   * .substrait.Type.I16 i16 = 3;
   */
  @java.lang.Override
  public io.substrait.proto.Type.I16OrBuilder getI16OrBuilder() {
    if (kindCase_ == 3) {
       return (io.substrait.proto.Type.I16) kind_;
    }
    return io.substrait.proto.Type.I16.getDefaultInstance();
  }

  public static final int I32_FIELD_NUMBER = 5;
  /**
   * .substrait.Type.I32 i32 = 5;
   * @return Whether the i32 field is set.
   */
  @java.lang.Override
  public boolean hasI32() {
    return kindCase_ == 5;
  }
  /**
   * .substrait.Type.I32 i32 = 5;
   * @return The i32.
   */
  @java.lang.Override
  public io.substrait.proto.Type.I32 getI32() {
    if (kindCase_ == 5) {
       return (io.substrait.proto.Type.I32) kind_;
    }
    return io.substrait.proto.Type.I32.getDefaultInstance();
  }
  /**
   * .substrait.Type.I32 i32 = 5;
   */
  @java.lang.Override
  public io.substrait.proto.Type.I32OrBuilder getI32OrBuilder() {
    if (kindCase_ == 5) {
       return (io.substrait.proto.Type.I32) kind_;
    }
    return io.substrait.proto.Type.I32.getDefaultInstance();
  }

  public static final int I64_FIELD_NUMBER = 7;
  /**
   * .substrait.Type.I64 i64 = 7;
   * @return Whether the i64 field is set.
   */
  @java.lang.Override
  public boolean hasI64() {
    return kindCase_ == 7;
  }
  /**
   * .substrait.Type.I64 i64 = 7;
   * @return The i64.
   */
  @java.lang.Override
  public io.substrait.proto.Type.I64 getI64() {
    if (kindCase_ == 7) {
       return (io.substrait.proto.Type.I64) kind_;
    }
    return io.substrait.proto.Type.I64.getDefaultInstance();
  }
  /**
   * .substrait.Type.I64 i64 = 7;
   */
  @java.lang.Override
  public io.substrait.proto.Type.I64OrBuilder getI64OrBuilder() {
    if (kindCase_ == 7) {
       return (io.substrait.proto.Type.I64) kind_;
    }
    return io.substrait.proto.Type.I64.getDefaultInstance();
  }

  public static final int FP32_FIELD_NUMBER = 10;
  /**
   * .substrait.Type.FP32 fp32 = 10;
   * @return Whether the fp32 field is set.
   */
  @java.lang.Override
  public boolean hasFp32() {
    return kindCase_ == 10;
  }
  /**
   * .substrait.Type.FP32 fp32 = 10;
   * @return The fp32.
   */
  @java.lang.Override
  public io.substrait.proto.Type.FP32 getFp32() {
    if (kindCase_ == 10) {
       return (io.substrait.proto.Type.FP32) kind_;
    }
    return io.substrait.proto.Type.FP32.getDefaultInstance();
  }
  /**
   * .substrait.Type.FP32 fp32 = 10;
   */
  @java.lang.Override
  public io.substrait.proto.Type.FP32OrBuilder getFp32OrBuilder() {
    if (kindCase_ == 10) {
       return (io.substrait.proto.Type.FP32) kind_;
    }
    return io.substrait.proto.Type.FP32.getDefaultInstance();
  }

  public static final int FP64_FIELD_NUMBER = 11;
  /**
   * .substrait.Type.FP64 fp64 = 11;
   * @return Whether the fp64 field is set.
   */
  @java.lang.Override
  public boolean hasFp64() {
    return kindCase_ == 11;
  }
  /**
   * .substrait.Type.FP64 fp64 = 11;
   * @return The fp64.
   */
  @java.lang.Override
  public io.substrait.proto.Type.FP64 getFp64() {
    if (kindCase_ == 11) {
       return (io.substrait.proto.Type.FP64) kind_;
    }
    return io.substrait.proto.Type.FP64.getDefaultInstance();
  }
  /**
   * .substrait.Type.FP64 fp64 = 11;
   */
  @java.lang.Override
  public io.substrait.proto.Type.FP64OrBuilder getFp64OrBuilder() {
    if (kindCase_ == 11) {
       return (io.substrait.proto.Type.FP64) kind_;
    }
    return io.substrait.proto.Type.FP64.getDefaultInstance();
  }

  public static final int STRING_FIELD_NUMBER = 12;
  /**
   * .substrait.Type.String string = 12;
   * @return Whether the string field is set.
   */
  @java.lang.Override
  public boolean hasString() {
    return kindCase_ == 12;
  }
  /**
   * .substrait.Type.String string = 12;
   * @return The string.
   */
  @java.lang.Override
  public io.substrait.proto.Type.String getString() {
    if (kindCase_ == 12) {
       return (io.substrait.proto.Type.String) kind_;
    }
    return io.substrait.proto.Type.String.getDefaultInstance();
  }
  /**
   * .substrait.Type.String string = 12;
   */
  @java.lang.Override
  public io.substrait.proto.Type.StringOrBuilder getStringOrBuilder() {
    if (kindCase_ == 12) {
       return (io.substrait.proto.Type.String) kind_;
    }
    return io.substrait.proto.Type.String.getDefaultInstance();
  }

  public static final int BINARY_FIELD_NUMBER = 13;
  /**
   * .substrait.Type.Binary binary = 13;
   * @return Whether the binary field is set.
   */
  @java.lang.Override
  public boolean hasBinary() {
    return kindCase_ == 13;
  }
  /**
   * .substrait.Type.Binary binary = 13;
   * @return The binary.
   */
  @java.lang.Override
  public io.substrait.proto.Type.Binary getBinary() {
    if (kindCase_ == 13) {
       return (io.substrait.proto.Type.Binary) kind_;
    }
    return io.substrait.proto.Type.Binary.getDefaultInstance();
  }
  /**
   * .substrait.Type.Binary binary = 13;
   */
  @java.lang.Override
  public io.substrait.proto.Type.BinaryOrBuilder getBinaryOrBuilder() {
    if (kindCase_ == 13) {
       return (io.substrait.proto.Type.Binary) kind_;
    }
    return io.substrait.proto.Type.Binary.getDefaultInstance();
  }

  public static final int TIMESTAMP_FIELD_NUMBER = 14;
  /**
   * 
   * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
   * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp is deprecated. * See substrait/type_expressions.proto;l=24 * @return Whether the timestamp field is set. */ @java.lang.Override @java.lang.Deprecated public boolean hasTimestamp() { return kindCase_ == 14; } /** *
   * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
   * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp is deprecated. * See substrait/type_expressions.proto;l=24 * @return The timestamp. */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.Timestamp getTimestamp() { if (kindCase_ == 14) { return (io.substrait.proto.Type.Timestamp) kind_; } return io.substrait.proto.Type.Timestamp.getDefaultInstance(); } /** *
   * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
   * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampOrBuilder getTimestampOrBuilder() { if (kindCase_ == 14) { return (io.substrait.proto.Type.Timestamp) kind_; } return io.substrait.proto.Type.Timestamp.getDefaultInstance(); } public static final int DATE_FIELD_NUMBER = 16; /** * .substrait.Type.Date date = 16; * @return Whether the date field is set. */ @java.lang.Override public boolean hasDate() { return kindCase_ == 16; } /** * .substrait.Type.Date date = 16; * @return The date. */ @java.lang.Override public io.substrait.proto.Type.Date getDate() { if (kindCase_ == 16) { return (io.substrait.proto.Type.Date) kind_; } return io.substrait.proto.Type.Date.getDefaultInstance(); } /** * .substrait.Type.Date date = 16; */ @java.lang.Override public io.substrait.proto.Type.DateOrBuilder getDateOrBuilder() { if (kindCase_ == 16) { return (io.substrait.proto.Type.Date) kind_; } return io.substrait.proto.Type.Date.getDefaultInstance(); } public static final int TIME_FIELD_NUMBER = 17; /** * .substrait.Type.Time time = 17; * @return Whether the time field is set. */ @java.lang.Override public boolean hasTime() { return kindCase_ == 17; } /** * .substrait.Type.Time time = 17; * @return The time. */ @java.lang.Override public io.substrait.proto.Type.Time getTime() { if (kindCase_ == 17) { return (io.substrait.proto.Type.Time) kind_; } return io.substrait.proto.Type.Time.getDefaultInstance(); } /** * .substrait.Type.Time time = 17; */ @java.lang.Override public io.substrait.proto.Type.TimeOrBuilder getTimeOrBuilder() { if (kindCase_ == 17) { return (io.substrait.proto.Type.Time) kind_; } return io.substrait.proto.Type.Time.getDefaultInstance(); } public static final int INTERVAL_YEAR_FIELD_NUMBER = 19; /** * .substrait.Type.IntervalYear interval_year = 19; * @return Whether the intervalYear field is set. */ @java.lang.Override public boolean hasIntervalYear() { return kindCase_ == 19; } /** * .substrait.Type.IntervalYear interval_year = 19; * @return The intervalYear. */ @java.lang.Override public io.substrait.proto.Type.IntervalYear getIntervalYear() { if (kindCase_ == 19) { return (io.substrait.proto.Type.IntervalYear) kind_; } return io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } /** * .substrait.Type.IntervalYear interval_year = 19; */ @java.lang.Override public io.substrait.proto.Type.IntervalYearOrBuilder getIntervalYearOrBuilder() { if (kindCase_ == 19) { return (io.substrait.proto.Type.IntervalYear) kind_; } return io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } public static final int TIMESTAMP_TZ_FIELD_NUMBER = 29; /** *
   * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
   * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp_tz is deprecated. * See substrait/type_expressions.proto;l=29 * @return Whether the timestampTz field is set. */ @java.lang.Override @java.lang.Deprecated public boolean hasTimestampTz() { return kindCase_ == 29; } /** *
   * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
   * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp_tz is deprecated. * See substrait/type_expressions.proto;l=29 * @return The timestampTz. */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampTZ getTimestampTz() { if (kindCase_ == 29) { return (io.substrait.proto.Type.TimestampTZ) kind_; } return io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } /** *
   * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
   * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampTZOrBuilder getTimestampTzOrBuilder() { if (kindCase_ == 29) { return (io.substrait.proto.Type.TimestampTZ) kind_; } return io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } public static final int UUID_FIELD_NUMBER = 32; /** * .substrait.Type.UUID uuid = 32; * @return Whether the uuid field is set. */ @java.lang.Override public boolean hasUuid() { return kindCase_ == 32; } /** * .substrait.Type.UUID uuid = 32; * @return The uuid. */ @java.lang.Override public io.substrait.proto.Type.UUID getUuid() { if (kindCase_ == 32) { return (io.substrait.proto.Type.UUID) kind_; } return io.substrait.proto.Type.UUID.getDefaultInstance(); } /** * .substrait.Type.UUID uuid = 32; */ @java.lang.Override public io.substrait.proto.Type.UUIDOrBuilder getUuidOrBuilder() { if (kindCase_ == 32) { return (io.substrait.proto.Type.UUID) kind_; } return io.substrait.proto.Type.UUID.getDefaultInstance(); } public static final int INTERVAL_DAY_FIELD_NUMBER = 20; /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; * @return Whether the intervalDay field is set. */ @java.lang.Override public boolean hasIntervalDay() { return kindCase_ == 20; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; * @return The intervalDay. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalDay getIntervalDay() { if (kindCase_ == 20) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder getIntervalDayOrBuilder() { if (kindCase_ == 20) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } public static final int INTERVAL_COMPOUND_FIELD_NUMBER = 42; /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; * @return Whether the intervalCompound field is set. */ @java.lang.Override public boolean hasIntervalCompound() { return kindCase_ == 42; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; * @return The intervalCompound. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound getIntervalCompound() { if (kindCase_ == 42) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder getIntervalCompoundOrBuilder() { if (kindCase_ == 42) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } public static final int FIXED_CHAR_FIELD_NUMBER = 21; /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; * @return Whether the fixedChar field is set. */ @java.lang.Override public boolean hasFixedChar() { return kindCase_ == 21; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; * @return The fixedChar. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedChar getFixedChar() { if (kindCase_ == 21) { return (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder getFixedCharOrBuilder() { if (kindCase_ == 21) { return (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } public static final int VARCHAR_FIELD_NUMBER = 22; /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; * @return Whether the varchar field is set. */ @java.lang.Override public boolean hasVarchar() { return kindCase_ == 22; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; * @return The varchar. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionVarChar getVarchar() { if (kindCase_ == 22) { return (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder getVarcharOrBuilder() { if (kindCase_ == 22) { return (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } public static final int FIXED_BINARY_FIELD_NUMBER = 23; /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; * @return Whether the fixedBinary field is set. */ @java.lang.Override public boolean hasFixedBinary() { return kindCase_ == 23; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; * @return The fixedBinary. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedBinary getFixedBinary() { if (kindCase_ == 23) { return (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder getFixedBinaryOrBuilder() { if (kindCase_ == 23) { return (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } public static final int DECIMAL_FIELD_NUMBER = 24; /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; * @return Whether the decimal field is set. */ @java.lang.Override public boolean hasDecimal() { return kindCase_ == 24; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; * @return The decimal. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionDecimal getDecimal() { if (kindCase_ == 24) { return (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_; } return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder getDecimalOrBuilder() { if (kindCase_ == 24) { return (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_; } return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } public static final int PRECISION_TIMESTAMP_FIELD_NUMBER = 40; /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; * @return Whether the precisionTimestamp field is set. */ @java.lang.Override public boolean hasPrecisionTimestamp() { return kindCase_ == 40; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; * @return The precisionTimestamp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp getPrecisionTimestamp() { if (kindCase_ == 40) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder getPrecisionTimestampOrBuilder() { if (kindCase_ == 40) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } public static final int PRECISION_TIMESTAMP_TZ_FIELD_NUMBER = 41; /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; * @return Whether the precisionTimestampTz field is set. */ @java.lang.Override public boolean hasPrecisionTimestampTz() { return kindCase_ == 41; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; * @return The precisionTimestampTz. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ getPrecisionTimestampTz() { if (kindCase_ == 41) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder getPrecisionTimestampTzOrBuilder() { if (kindCase_ == 41) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } public static final int STRUCT_FIELD_NUMBER = 25; /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; * @return Whether the struct field is set. */ @java.lang.Override public boolean hasStruct() { return kindCase_ == 25; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; * @return The struct. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionStruct getStruct() { if (kindCase_ == 25) { return (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_; } return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder getStructOrBuilder() { if (kindCase_ == 25) { return (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_; } return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } public static final int LIST_FIELD_NUMBER = 27; /** * .substrait.DerivationExpression.ExpressionList list = 27; * @return Whether the list field is set. */ @java.lang.Override public boolean hasList() { return kindCase_ == 27; } /** * .substrait.DerivationExpression.ExpressionList list = 27; * @return The list. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionList getList() { if (kindCase_ == 27) { return (io.substrait.proto.DerivationExpression.ExpressionList) kind_; } return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionListOrBuilder getListOrBuilder() { if (kindCase_ == 27) { return (io.substrait.proto.DerivationExpression.ExpressionList) kind_; } return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } public static final int MAP_FIELD_NUMBER = 28; /** * .substrait.DerivationExpression.ExpressionMap map = 28; * @return Whether the map field is set. */ @java.lang.Override public boolean hasMap() { return kindCase_ == 28; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; * @return The map. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionMap getMap() { if (kindCase_ == 28) { return (io.substrait.proto.DerivationExpression.ExpressionMap) kind_; } return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder getMapOrBuilder() { if (kindCase_ == 28) { return (io.substrait.proto.DerivationExpression.ExpressionMap) kind_; } return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } public static final int USER_DEFINED_FIELD_NUMBER = 30; /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; * @return Whether the userDefined field is set. */ @java.lang.Override public boolean hasUserDefined() { return kindCase_ == 30; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; * @return The userDefined. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionUserDefined getUserDefined() { if (kindCase_ == 30) { return (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_; } return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder getUserDefinedOrBuilder() { if (kindCase_ == 30) { return (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_; } return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } public static final int USER_DEFINED_POINTER_FIELD_NUMBER = 31; /** *
   * Deprecated in favor of user_defined, which allows nullability and
   * variations to be specified. If user_defined_pointer is encountered,
   * treat it as being non-nullable and having the default variation.
   * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @return Whether the userDefinedPointer field is set. */ @java.lang.Override @java.lang.Deprecated public boolean hasUserDefinedPointer() { return kindCase_ == 31; } /** *
   * Deprecated in favor of user_defined, which allows nullability and
   * variations to be specified. If user_defined_pointer is encountered,
   * treat it as being non-nullable and having the default variation.
   * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @return The userDefinedPointer. */ @java.lang.Override @java.lang.Deprecated public int getUserDefinedPointer() { if (kindCase_ == 31) { return (java.lang.Integer) kind_; } return 0; } public static final int TYPE_PARAMETER_NAME_FIELD_NUMBER = 33; /** * string type_parameter_name = 33; * @return Whether the typeParameterName field is set. */ public boolean hasTypeParameterName() { return kindCase_ == 33; } /** * string type_parameter_name = 33; * @return The typeParameterName. */ public java.lang.String getTypeParameterName() { java.lang.Object ref = ""; if (kindCase_ == 33) { ref = kind_; } 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 (kindCase_ == 33) { kind_ = s; } return s; } } /** * string type_parameter_name = 33; * @return The bytes for typeParameterName. */ public com.google.protobuf.ByteString getTypeParameterNameBytes() { java.lang.Object ref = ""; if (kindCase_ == 33) { ref = kind_; } if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); if (kindCase_ == 33) { kind_ = b; } return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int INTEGER_PARAMETER_NAME_FIELD_NUMBER = 34; /** * string integer_parameter_name = 34; * @return Whether the integerParameterName field is set. */ public boolean hasIntegerParameterName() { return kindCase_ == 34; } /** * string integer_parameter_name = 34; * @return The integerParameterName. */ public java.lang.String getIntegerParameterName() { java.lang.Object ref = ""; if (kindCase_ == 34) { ref = kind_; } 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 (kindCase_ == 34) { kind_ = s; } return s; } } /** * string integer_parameter_name = 34; * @return The bytes for integerParameterName. */ public com.google.protobuf.ByteString getIntegerParameterNameBytes() { java.lang.Object ref = ""; if (kindCase_ == 34) { ref = kind_; } if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); if (kindCase_ == 34) { kind_ = b; } return b; } else { return (com.google.protobuf.ByteString) ref; } } public static final int INTEGER_LITERAL_FIELD_NUMBER = 35; /** * int32 integer_literal = 35; * @return Whether the integerLiteral field is set. */ @java.lang.Override public boolean hasIntegerLiteral() { return kindCase_ == 35; } /** * int32 integer_literal = 35; * @return The integerLiteral. */ @java.lang.Override public int getIntegerLiteral() { if (kindCase_ == 35) { return (java.lang.Integer) kind_; } return 0; } public static final int UNARY_OP_FIELD_NUMBER = 36; /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; * @return Whether the unaryOp field is set. */ @java.lang.Override public boolean hasUnaryOp() { return kindCase_ == 36; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; * @return The unaryOp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.UnaryOp getUnaryOp() { if (kindCase_ == 36) { return (io.substrait.proto.DerivationExpression.UnaryOp) kind_; } return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ @java.lang.Override public io.substrait.proto.DerivationExpression.UnaryOpOrBuilder getUnaryOpOrBuilder() { if (kindCase_ == 36) { return (io.substrait.proto.DerivationExpression.UnaryOp) kind_; } return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } public static final int BINARY_OP_FIELD_NUMBER = 37; /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; * @return Whether the binaryOp field is set. */ @java.lang.Override public boolean hasBinaryOp() { return kindCase_ == 37; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; * @return The binaryOp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.BinaryOp getBinaryOp() { if (kindCase_ == 37) { return (io.substrait.proto.DerivationExpression.BinaryOp) kind_; } return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ @java.lang.Override public io.substrait.proto.DerivationExpression.BinaryOpOrBuilder getBinaryOpOrBuilder() { if (kindCase_ == 37) { return (io.substrait.proto.DerivationExpression.BinaryOp) kind_; } return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } public static final int IF_ELSE_FIELD_NUMBER = 38; /** * .substrait.DerivationExpression.IfElse if_else = 38; * @return Whether the ifElse field is set. */ @java.lang.Override public boolean hasIfElse() { return kindCase_ == 38; } /** * .substrait.DerivationExpression.IfElse if_else = 38; * @return The ifElse. */ @java.lang.Override public io.substrait.proto.DerivationExpression.IfElse getIfElse() { if (kindCase_ == 38) { return (io.substrait.proto.DerivationExpression.IfElse) kind_; } return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ @java.lang.Override public io.substrait.proto.DerivationExpression.IfElseOrBuilder getIfElseOrBuilder() { if (kindCase_ == 38) { return (io.substrait.proto.DerivationExpression.IfElse) kind_; } return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } public static final int RETURN_PROGRAM_FIELD_NUMBER = 39; /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; * @return Whether the returnProgram field is set. */ @java.lang.Override public boolean hasReturnProgram() { return kindCase_ == 39; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; * @return The returnProgram. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ReturnProgram getReturnProgram() { if (kindCase_ == 39) { return (io.substrait.proto.DerivationExpression.ReturnProgram) kind_; } return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder getReturnProgramOrBuilder() { if (kindCase_ == 39) { return (io.substrait.proto.DerivationExpression.ReturnProgram) kind_; } return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized == 1) return true; if (isInitialized == 0) return false; memoizedIsInitialized = 1; return true; } @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { if (kindCase_ == 1) { output.writeMessage(1, (io.substrait.proto.Type.Boolean) kind_); } if (kindCase_ == 2) { output.writeMessage(2, (io.substrait.proto.Type.I8) kind_); } if (kindCase_ == 3) { output.writeMessage(3, (io.substrait.proto.Type.I16) kind_); } if (kindCase_ == 5) { output.writeMessage(5, (io.substrait.proto.Type.I32) kind_); } if (kindCase_ == 7) { output.writeMessage(7, (io.substrait.proto.Type.I64) kind_); } if (kindCase_ == 10) { output.writeMessage(10, (io.substrait.proto.Type.FP32) kind_); } if (kindCase_ == 11) { output.writeMessage(11, (io.substrait.proto.Type.FP64) kind_); } if (kindCase_ == 12) { output.writeMessage(12, (io.substrait.proto.Type.String) kind_); } if (kindCase_ == 13) { output.writeMessage(13, (io.substrait.proto.Type.Binary) kind_); } if (kindCase_ == 14) { output.writeMessage(14, (io.substrait.proto.Type.Timestamp) kind_); } if (kindCase_ == 16) { output.writeMessage(16, (io.substrait.proto.Type.Date) kind_); } if (kindCase_ == 17) { output.writeMessage(17, (io.substrait.proto.Type.Time) kind_); } if (kindCase_ == 19) { output.writeMessage(19, (io.substrait.proto.Type.IntervalYear) kind_); } if (kindCase_ == 20) { output.writeMessage(20, (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_); } if (kindCase_ == 21) { output.writeMessage(21, (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_); } if (kindCase_ == 22) { output.writeMessage(22, (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_); } if (kindCase_ == 23) { output.writeMessage(23, (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_); } if (kindCase_ == 24) { output.writeMessage(24, (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_); } if (kindCase_ == 25) { output.writeMessage(25, (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_); } if (kindCase_ == 27) { output.writeMessage(27, (io.substrait.proto.DerivationExpression.ExpressionList) kind_); } if (kindCase_ == 28) { output.writeMessage(28, (io.substrait.proto.DerivationExpression.ExpressionMap) kind_); } if (kindCase_ == 29) { output.writeMessage(29, (io.substrait.proto.Type.TimestampTZ) kind_); } if (kindCase_ == 30) { output.writeMessage(30, (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_); } if (kindCase_ == 31) { output.writeUInt32( 31, (int)((java.lang.Integer) kind_)); } if (kindCase_ == 32) { output.writeMessage(32, (io.substrait.proto.Type.UUID) kind_); } if (kindCase_ == 33) { com.google.protobuf.GeneratedMessageV3.writeString(output, 33, kind_); } if (kindCase_ == 34) { com.google.protobuf.GeneratedMessageV3.writeString(output, 34, kind_); } if (kindCase_ == 35) { output.writeInt32( 35, (int)((java.lang.Integer) kind_)); } if (kindCase_ == 36) { output.writeMessage(36, (io.substrait.proto.DerivationExpression.UnaryOp) kind_); } if (kindCase_ == 37) { output.writeMessage(37, (io.substrait.proto.DerivationExpression.BinaryOp) kind_); } if (kindCase_ == 38) { output.writeMessage(38, (io.substrait.proto.DerivationExpression.IfElse) kind_); } if (kindCase_ == 39) { output.writeMessage(39, (io.substrait.proto.DerivationExpression.ReturnProgram) kind_); } if (kindCase_ == 40) { output.writeMessage(40, (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_); } if (kindCase_ == 41) { output.writeMessage(41, (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_); } if (kindCase_ == 42) { output.writeMessage(42, (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_); } getUnknownFields().writeTo(output); } @java.lang.Override public int getSerializedSize() { int size = memoizedSize; if (size != -1) return size; size = 0; if (kindCase_ == 1) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(1, (io.substrait.proto.Type.Boolean) kind_); } if (kindCase_ == 2) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(2, (io.substrait.proto.Type.I8) kind_); } if (kindCase_ == 3) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, (io.substrait.proto.Type.I16) kind_); } if (kindCase_ == 5) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(5, (io.substrait.proto.Type.I32) kind_); } if (kindCase_ == 7) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(7, (io.substrait.proto.Type.I64) kind_); } if (kindCase_ == 10) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(10, (io.substrait.proto.Type.FP32) kind_); } if (kindCase_ == 11) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(11, (io.substrait.proto.Type.FP64) kind_); } if (kindCase_ == 12) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(12, (io.substrait.proto.Type.String) kind_); } if (kindCase_ == 13) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(13, (io.substrait.proto.Type.Binary) kind_); } if (kindCase_ == 14) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(14, (io.substrait.proto.Type.Timestamp) kind_); } if (kindCase_ == 16) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(16, (io.substrait.proto.Type.Date) kind_); } if (kindCase_ == 17) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(17, (io.substrait.proto.Type.Time) kind_); } if (kindCase_ == 19) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(19, (io.substrait.proto.Type.IntervalYear) kind_); } if (kindCase_ == 20) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(20, (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_); } if (kindCase_ == 21) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(21, (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_); } if (kindCase_ == 22) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(22, (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_); } if (kindCase_ == 23) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(23, (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_); } if (kindCase_ == 24) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(24, (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_); } if (kindCase_ == 25) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(25, (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_); } if (kindCase_ == 27) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(27, (io.substrait.proto.DerivationExpression.ExpressionList) kind_); } if (kindCase_ == 28) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(28, (io.substrait.proto.DerivationExpression.ExpressionMap) kind_); } if (kindCase_ == 29) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(29, (io.substrait.proto.Type.TimestampTZ) kind_); } if (kindCase_ == 30) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(30, (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_); } if (kindCase_ == 31) { size += com.google.protobuf.CodedOutputStream .computeUInt32Size( 31, (int)((java.lang.Integer) kind_)); } if (kindCase_ == 32) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(32, (io.substrait.proto.Type.UUID) kind_); } if (kindCase_ == 33) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(33, kind_); } if (kindCase_ == 34) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, kind_); } if (kindCase_ == 35) { size += com.google.protobuf.CodedOutputStream .computeInt32Size( 35, (int)((java.lang.Integer) kind_)); } if (kindCase_ == 36) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(36, (io.substrait.proto.DerivationExpression.UnaryOp) kind_); } if (kindCase_ == 37) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(37, (io.substrait.proto.DerivationExpression.BinaryOp) kind_); } if (kindCase_ == 38) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(38, (io.substrait.proto.DerivationExpression.IfElse) kind_); } if (kindCase_ == 39) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(39, (io.substrait.proto.DerivationExpression.ReturnProgram) kind_); } if (kindCase_ == 40) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(40, (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_); } if (kindCase_ == 41) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(41, (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_); } if (kindCase_ == 42) { size += com.google.protobuf.CodedOutputStream .computeMessageSize(42, (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; } @java.lang.Override public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } if (!(obj instanceof io.substrait.proto.DerivationExpression)) { return super.equals(obj); } io.substrait.proto.DerivationExpression other = (io.substrait.proto.DerivationExpression) obj; if (!getKindCase().equals(other.getKindCase())) return false; switch (kindCase_) { case 1: if (!getBool() .equals(other.getBool())) return false; break; case 2: if (!getI8() .equals(other.getI8())) return false; break; case 3: if (!getI16() .equals(other.getI16())) return false; break; case 5: if (!getI32() .equals(other.getI32())) return false; break; case 7: if (!getI64() .equals(other.getI64())) return false; break; case 10: if (!getFp32() .equals(other.getFp32())) return false; break; case 11: if (!getFp64() .equals(other.getFp64())) return false; break; case 12: if (!getString() .equals(other.getString())) return false; break; case 13: if (!getBinary() .equals(other.getBinary())) return false; break; case 14: if (!getTimestamp() .equals(other.getTimestamp())) return false; break; case 16: if (!getDate() .equals(other.getDate())) return false; break; case 17: if (!getTime() .equals(other.getTime())) return false; break; case 19: if (!getIntervalYear() .equals(other.getIntervalYear())) return false; break; case 29: if (!getTimestampTz() .equals(other.getTimestampTz())) return false; break; case 32: if (!getUuid() .equals(other.getUuid())) return false; break; case 20: if (!getIntervalDay() .equals(other.getIntervalDay())) return false; break; case 42: if (!getIntervalCompound() .equals(other.getIntervalCompound())) return false; break; case 21: if (!getFixedChar() .equals(other.getFixedChar())) return false; break; case 22: if (!getVarchar() .equals(other.getVarchar())) return false; break; case 23: if (!getFixedBinary() .equals(other.getFixedBinary())) return false; break; case 24: if (!getDecimal() .equals(other.getDecimal())) return false; break; case 40: if (!getPrecisionTimestamp() .equals(other.getPrecisionTimestamp())) return false; break; case 41: if (!getPrecisionTimestampTz() .equals(other.getPrecisionTimestampTz())) return false; break; case 25: if (!getStruct() .equals(other.getStruct())) return false; break; case 27: if (!getList() .equals(other.getList())) return false; break; case 28: if (!getMap() .equals(other.getMap())) return false; break; case 30: if (!getUserDefined() .equals(other.getUserDefined())) return false; break; case 31: if (getUserDefinedPointer() != other.getUserDefinedPointer()) return false; break; case 33: if (!getTypeParameterName() .equals(other.getTypeParameterName())) return false; break; case 34: if (!getIntegerParameterName() .equals(other.getIntegerParameterName())) return false; break; case 35: if (getIntegerLiteral() != other.getIntegerLiteral()) return false; break; case 36: if (!getUnaryOp() .equals(other.getUnaryOp())) return false; break; case 37: if (!getBinaryOp() .equals(other.getBinaryOp())) return false; break; case 38: if (!getIfElse() .equals(other.getIfElse())) return false; break; case 39: if (!getReturnProgram() .equals(other.getReturnProgram())) return false; break; case 0: default: } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @java.lang.Override public int hashCode() { if (memoizedHashCode != 0) { return memoizedHashCode; } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); switch (kindCase_) { case 1: hash = (37 * hash) + BOOL_FIELD_NUMBER; hash = (53 * hash) + getBool().hashCode(); break; case 2: hash = (37 * hash) + I8_FIELD_NUMBER; hash = (53 * hash) + getI8().hashCode(); break; case 3: hash = (37 * hash) + I16_FIELD_NUMBER; hash = (53 * hash) + getI16().hashCode(); break; case 5: hash = (37 * hash) + I32_FIELD_NUMBER; hash = (53 * hash) + getI32().hashCode(); break; case 7: hash = (37 * hash) + I64_FIELD_NUMBER; hash = (53 * hash) + getI64().hashCode(); break; case 10: hash = (37 * hash) + FP32_FIELD_NUMBER; hash = (53 * hash) + getFp32().hashCode(); break; case 11: hash = (37 * hash) + FP64_FIELD_NUMBER; hash = (53 * hash) + getFp64().hashCode(); break; case 12: hash = (37 * hash) + STRING_FIELD_NUMBER; hash = (53 * hash) + getString().hashCode(); break; case 13: hash = (37 * hash) + BINARY_FIELD_NUMBER; hash = (53 * hash) + getBinary().hashCode(); break; case 14: hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + getTimestamp().hashCode(); break; case 16: hash = (37 * hash) + DATE_FIELD_NUMBER; hash = (53 * hash) + getDate().hashCode(); break; case 17: hash = (37 * hash) + TIME_FIELD_NUMBER; hash = (53 * hash) + getTime().hashCode(); break; case 19: hash = (37 * hash) + INTERVAL_YEAR_FIELD_NUMBER; hash = (53 * hash) + getIntervalYear().hashCode(); break; case 29: hash = (37 * hash) + TIMESTAMP_TZ_FIELD_NUMBER; hash = (53 * hash) + getTimestampTz().hashCode(); break; case 32: hash = (37 * hash) + UUID_FIELD_NUMBER; hash = (53 * hash) + getUuid().hashCode(); break; case 20: hash = (37 * hash) + INTERVAL_DAY_FIELD_NUMBER; hash = (53 * hash) + getIntervalDay().hashCode(); break; case 42: hash = (37 * hash) + INTERVAL_COMPOUND_FIELD_NUMBER; hash = (53 * hash) + getIntervalCompound().hashCode(); break; case 21: hash = (37 * hash) + FIXED_CHAR_FIELD_NUMBER; hash = (53 * hash) + getFixedChar().hashCode(); break; case 22: hash = (37 * hash) + VARCHAR_FIELD_NUMBER; hash = (53 * hash) + getVarchar().hashCode(); break; case 23: hash = (37 * hash) + FIXED_BINARY_FIELD_NUMBER; hash = (53 * hash) + getFixedBinary().hashCode(); break; case 24: hash = (37 * hash) + DECIMAL_FIELD_NUMBER; hash = (53 * hash) + getDecimal().hashCode(); break; case 40: hash = (37 * hash) + PRECISION_TIMESTAMP_FIELD_NUMBER; hash = (53 * hash) + getPrecisionTimestamp().hashCode(); break; case 41: hash = (37 * hash) + PRECISION_TIMESTAMP_TZ_FIELD_NUMBER; hash = (53 * hash) + getPrecisionTimestampTz().hashCode(); break; case 25: hash = (37 * hash) + STRUCT_FIELD_NUMBER; hash = (53 * hash) + getStruct().hashCode(); break; case 27: hash = (37 * hash) + LIST_FIELD_NUMBER; hash = (53 * hash) + getList().hashCode(); break; case 28: hash = (37 * hash) + MAP_FIELD_NUMBER; hash = (53 * hash) + getMap().hashCode(); break; case 30: hash = (37 * hash) + USER_DEFINED_FIELD_NUMBER; hash = (53 * hash) + getUserDefined().hashCode(); break; case 31: hash = (37 * hash) + USER_DEFINED_POINTER_FIELD_NUMBER; hash = (53 * hash) + getUserDefinedPointer(); break; case 33: hash = (37 * hash) + TYPE_PARAMETER_NAME_FIELD_NUMBER; hash = (53 * hash) + getTypeParameterName().hashCode(); break; case 34: hash = (37 * hash) + INTEGER_PARAMETER_NAME_FIELD_NUMBER; hash = (53 * hash) + getIntegerParameterName().hashCode(); break; case 35: hash = (37 * hash) + INTEGER_LITERAL_FIELD_NUMBER; hash = (53 * hash) + getIntegerLiteral(); break; case 36: hash = (37 * hash) + UNARY_OP_FIELD_NUMBER; hash = (53 * hash) + getUnaryOp().hashCode(); break; case 37: hash = (37 * hash) + BINARY_OP_FIELD_NUMBER; hash = (53 * hash) + getBinaryOp().hashCode(); break; case 38: hash = (37 * hash) + IF_ELSE_FIELD_NUMBER; hash = (53 * hash) + getIfElse().hashCode(); break; case 39: hash = (37 * hash) + RETURN_PROGRAM_FIELD_NUMBER; hash = (53 * hash) + getReturnProgram().hashCode(); break; case 0: default: } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; } public static io.substrait.proto.DerivationExpression parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static io.substrait.proto.DerivationExpression parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static io.substrait.proto.DerivationExpression parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static io.substrait.proto.DerivationExpression parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static io.substrait.proto.DerivationExpression parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } public static io.substrait.proto.DerivationExpression parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } public static io.substrait.proto.DerivationExpression parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static io.substrait.proto.DerivationExpression 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 io.substrait.proto.DerivationExpression parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } public static io.substrait.proto.DerivationExpression 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 io.substrait.proto.DerivationExpression parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } public static io.substrait.proto.DerivationExpression 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(io.substrait.proto.DerivationExpression 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 substrait.DerivationExpression} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements // @@protoc_insertion_point(builder_implements:substrait.DerivationExpression) io.substrait.proto.DerivationExpressionOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_fieldAccessorTable .ensureFieldAccessorsInitialized( io.substrait.proto.DerivationExpression.class, io.substrait.proto.DerivationExpression.Builder.class); } // Construct using io.substrait.proto.DerivationExpression.newBuilder() private Builder() { } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); } @java.lang.Override public Builder clear() { super.clear(); bitField0_ = 0; bitField1_ = 0; if (boolBuilder_ != null) { boolBuilder_.clear(); } if (i8Builder_ != null) { i8Builder_.clear(); } if (i16Builder_ != null) { i16Builder_.clear(); } if (i32Builder_ != null) { i32Builder_.clear(); } if (i64Builder_ != null) { i64Builder_.clear(); } if (fp32Builder_ != null) { fp32Builder_.clear(); } if (fp64Builder_ != null) { fp64Builder_.clear(); } if (stringBuilder_ != null) { stringBuilder_.clear(); } if (binaryBuilder_ != null) { binaryBuilder_.clear(); } if (timestampBuilder_ != null) { timestampBuilder_.clear(); } if (dateBuilder_ != null) { dateBuilder_.clear(); } if (timeBuilder_ != null) { timeBuilder_.clear(); } if (intervalYearBuilder_ != null) { intervalYearBuilder_.clear(); } if (timestampTzBuilder_ != null) { timestampTzBuilder_.clear(); } if (uuidBuilder_ != null) { uuidBuilder_.clear(); } if (intervalDayBuilder_ != null) { intervalDayBuilder_.clear(); } if (intervalCompoundBuilder_ != null) { intervalCompoundBuilder_.clear(); } if (fixedCharBuilder_ != null) { fixedCharBuilder_.clear(); } if (varcharBuilder_ != null) { varcharBuilder_.clear(); } if (fixedBinaryBuilder_ != null) { fixedBinaryBuilder_.clear(); } if (decimalBuilder_ != null) { decimalBuilder_.clear(); } if (precisionTimestampBuilder_ != null) { precisionTimestampBuilder_.clear(); } if (precisionTimestampTzBuilder_ != null) { precisionTimestampTzBuilder_.clear(); } if (structBuilder_ != null) { structBuilder_.clear(); } if (listBuilder_ != null) { listBuilder_.clear(); } if (mapBuilder_ != null) { mapBuilder_.clear(); } if (userDefinedBuilder_ != null) { userDefinedBuilder_.clear(); } if (unaryOpBuilder_ != null) { unaryOpBuilder_.clear(); } if (binaryOpBuilder_ != null) { binaryOpBuilder_.clear(); } if (ifElseBuilder_ != null) { ifElseBuilder_.clear(); } if (returnProgramBuilder_ != null) { returnProgramBuilder_.clear(); } kindCase_ = 0; kind_ = null; return this; } @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { return io.substrait.proto.TypeExpressions.internal_static_substrait_DerivationExpression_descriptor; } @java.lang.Override public io.substrait.proto.DerivationExpression getDefaultInstanceForType() { return io.substrait.proto.DerivationExpression.getDefaultInstance(); } @java.lang.Override public io.substrait.proto.DerivationExpression build() { io.substrait.proto.DerivationExpression result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } @java.lang.Override public io.substrait.proto.DerivationExpression buildPartial() { io.substrait.proto.DerivationExpression result = new io.substrait.proto.DerivationExpression(this); if (bitField0_ != 0) { buildPartial0(result); } if (bitField1_ != 0) { buildPartial1(result); } buildPartialOneofs(result); onBuilt(); return result; } private void buildPartial0(io.substrait.proto.DerivationExpression result) { int from_bitField0_ = bitField0_; } private void buildPartial1(io.substrait.proto.DerivationExpression result) { int from_bitField1_ = bitField1_; } private void buildPartialOneofs(io.substrait.proto.DerivationExpression result) { result.kindCase_ = kindCase_; result.kind_ = this.kind_; if (kindCase_ == 1 && boolBuilder_ != null) { result.kind_ = boolBuilder_.build(); } if (kindCase_ == 2 && i8Builder_ != null) { result.kind_ = i8Builder_.build(); } if (kindCase_ == 3 && i16Builder_ != null) { result.kind_ = i16Builder_.build(); } if (kindCase_ == 5 && i32Builder_ != null) { result.kind_ = i32Builder_.build(); } if (kindCase_ == 7 && i64Builder_ != null) { result.kind_ = i64Builder_.build(); } if (kindCase_ == 10 && fp32Builder_ != null) { result.kind_ = fp32Builder_.build(); } if (kindCase_ == 11 && fp64Builder_ != null) { result.kind_ = fp64Builder_.build(); } if (kindCase_ == 12 && stringBuilder_ != null) { result.kind_ = stringBuilder_.build(); } if (kindCase_ == 13 && binaryBuilder_ != null) { result.kind_ = binaryBuilder_.build(); } if (kindCase_ == 14 && timestampBuilder_ != null) { result.kind_ = timestampBuilder_.build(); } if (kindCase_ == 16 && dateBuilder_ != null) { result.kind_ = dateBuilder_.build(); } if (kindCase_ == 17 && timeBuilder_ != null) { result.kind_ = timeBuilder_.build(); } if (kindCase_ == 19 && intervalYearBuilder_ != null) { result.kind_ = intervalYearBuilder_.build(); } if (kindCase_ == 29 && timestampTzBuilder_ != null) { result.kind_ = timestampTzBuilder_.build(); } if (kindCase_ == 32 && uuidBuilder_ != null) { result.kind_ = uuidBuilder_.build(); } if (kindCase_ == 20 && intervalDayBuilder_ != null) { result.kind_ = intervalDayBuilder_.build(); } if (kindCase_ == 42 && intervalCompoundBuilder_ != null) { result.kind_ = intervalCompoundBuilder_.build(); } if (kindCase_ == 21 && fixedCharBuilder_ != null) { result.kind_ = fixedCharBuilder_.build(); } if (kindCase_ == 22 && varcharBuilder_ != null) { result.kind_ = varcharBuilder_.build(); } if (kindCase_ == 23 && fixedBinaryBuilder_ != null) { result.kind_ = fixedBinaryBuilder_.build(); } if (kindCase_ == 24 && decimalBuilder_ != null) { result.kind_ = decimalBuilder_.build(); } if (kindCase_ == 40 && precisionTimestampBuilder_ != null) { result.kind_ = precisionTimestampBuilder_.build(); } if (kindCase_ == 41 && precisionTimestampTzBuilder_ != null) { result.kind_ = precisionTimestampTzBuilder_.build(); } if (kindCase_ == 25 && structBuilder_ != null) { result.kind_ = structBuilder_.build(); } if (kindCase_ == 27 && listBuilder_ != null) { result.kind_ = listBuilder_.build(); } if (kindCase_ == 28 && mapBuilder_ != null) { result.kind_ = mapBuilder_.build(); } if (kindCase_ == 30 && userDefinedBuilder_ != null) { result.kind_ = userDefinedBuilder_.build(); } if (kindCase_ == 36 && unaryOpBuilder_ != null) { result.kind_ = unaryOpBuilder_.build(); } if (kindCase_ == 37 && binaryOpBuilder_ != null) { result.kind_ = binaryOpBuilder_.build(); } if (kindCase_ == 38 && ifElseBuilder_ != null) { result.kind_ = ifElseBuilder_.build(); } if (kindCase_ == 39 && returnProgramBuilder_ != null) { result.kind_ = returnProgramBuilder_.build(); } } @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 io.substrait.proto.DerivationExpression) { return mergeFrom((io.substrait.proto.DerivationExpression)other); } else { super.mergeFrom(other); return this; } } public Builder mergeFrom(io.substrait.proto.DerivationExpression other) { if (other == io.substrait.proto.DerivationExpression.getDefaultInstance()) return this; switch (other.getKindCase()) { case BOOL: { mergeBool(other.getBool()); break; } case I8: { mergeI8(other.getI8()); break; } case I16: { mergeI16(other.getI16()); break; } case I32: { mergeI32(other.getI32()); break; } case I64: { mergeI64(other.getI64()); break; } case FP32: { mergeFp32(other.getFp32()); break; } case FP64: { mergeFp64(other.getFp64()); break; } case STRING: { mergeString(other.getString()); break; } case BINARY: { mergeBinary(other.getBinary()); break; } case TIMESTAMP: { mergeTimestamp(other.getTimestamp()); break; } case DATE: { mergeDate(other.getDate()); break; } case TIME: { mergeTime(other.getTime()); break; } case INTERVAL_YEAR: { mergeIntervalYear(other.getIntervalYear()); break; } case TIMESTAMP_TZ: { mergeTimestampTz(other.getTimestampTz()); break; } case UUID: { mergeUuid(other.getUuid()); break; } case INTERVAL_DAY: { mergeIntervalDay(other.getIntervalDay()); break; } case INTERVAL_COMPOUND: { mergeIntervalCompound(other.getIntervalCompound()); break; } case FIXED_CHAR: { mergeFixedChar(other.getFixedChar()); break; } case VARCHAR: { mergeVarchar(other.getVarchar()); break; } case FIXED_BINARY: { mergeFixedBinary(other.getFixedBinary()); break; } case DECIMAL: { mergeDecimal(other.getDecimal()); break; } case PRECISION_TIMESTAMP: { mergePrecisionTimestamp(other.getPrecisionTimestamp()); break; } case PRECISION_TIMESTAMP_TZ: { mergePrecisionTimestampTz(other.getPrecisionTimestampTz()); break; } case STRUCT: { mergeStruct(other.getStruct()); break; } case LIST: { mergeList(other.getList()); break; } case MAP: { mergeMap(other.getMap()); break; } case USER_DEFINED: { mergeUserDefined(other.getUserDefined()); break; } case USER_DEFINED_POINTER: { setUserDefinedPointer(other.getUserDefinedPointer()); break; } case TYPE_PARAMETER_NAME: { kindCase_ = 33; kind_ = other.kind_; onChanged(); break; } case INTEGER_PARAMETER_NAME: { kindCase_ = 34; kind_ = other.kind_; onChanged(); break; } case INTEGER_LITERAL: { setIntegerLiteral(other.getIntegerLiteral()); break; } case UNARY_OP: { mergeUnaryOp(other.getUnaryOp()); break; } case BINARY_OP: { mergeBinaryOp(other.getBinaryOp()); break; } case IF_ELSE: { mergeIfElse(other.getIfElse()); break; } case RETURN_PROGRAM: { mergeReturnProgram(other.getReturnProgram()); break; } case KIND_NOT_SET: { break; } } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; } @java.lang.Override public final boolean isInitialized() { return true; } @java.lang.Override public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { if (extensionRegistry == null) { throw new java.lang.NullPointerException(); } try { boolean done = false; while (!done) { int tag = input.readTag(); switch (tag) { case 0: done = true; break; case 10: { input.readMessage( getBoolFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 1; break; } // case 10 case 18: { input.readMessage( getI8FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 2; break; } // case 18 case 26: { input.readMessage( getI16FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 3; break; } // case 26 case 42: { input.readMessage( getI32FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 5; break; } // case 42 case 58: { input.readMessage( getI64FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 7; break; } // case 58 case 82: { input.readMessage( getFp32FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 10; break; } // case 82 case 90: { input.readMessage( getFp64FieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 11; break; } // case 90 case 98: { input.readMessage( getStringFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 12; break; } // case 98 case 106: { input.readMessage( getBinaryFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 13; break; } // case 106 case 114: { input.readMessage( getTimestampFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 14; break; } // case 114 case 130: { input.readMessage( getDateFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 16; break; } // case 130 case 138: { input.readMessage( getTimeFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 17; break; } // case 138 case 154: { input.readMessage( getIntervalYearFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 19; break; } // case 154 case 162: { input.readMessage( getIntervalDayFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 20; break; } // case 162 case 170: { input.readMessage( getFixedCharFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 21; break; } // case 170 case 178: { input.readMessage( getVarcharFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 22; break; } // case 178 case 186: { input.readMessage( getFixedBinaryFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 23; break; } // case 186 case 194: { input.readMessage( getDecimalFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 24; break; } // case 194 case 202: { input.readMessage( getStructFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 25; break; } // case 202 case 218: { input.readMessage( getListFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 27; break; } // case 218 case 226: { input.readMessage( getMapFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 28; break; } // case 226 case 234: { input.readMessage( getTimestampTzFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 29; break; } // case 234 case 242: { input.readMessage( getUserDefinedFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 30; break; } // case 242 case 248: { kind_ = input.readUInt32(); kindCase_ = 31; break; } // case 248 case 258: { input.readMessage( getUuidFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 32; break; } // case 258 case 266: { java.lang.String s = input.readStringRequireUtf8(); kindCase_ = 33; kind_ = s; break; } // case 266 case 274: { java.lang.String s = input.readStringRequireUtf8(); kindCase_ = 34; kind_ = s; break; } // case 274 case 280: { kind_ = input.readInt32(); kindCase_ = 35; break; } // case 280 case 290: { input.readMessage( getUnaryOpFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 36; break; } // case 290 case 298: { input.readMessage( getBinaryOpFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 37; break; } // case 298 case 306: { input.readMessage( getIfElseFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 38; break; } // case 306 case 314: { input.readMessage( getReturnProgramFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 39; break; } // case 314 case 322: { input.readMessage( getPrecisionTimestampFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 40; break; } // case 322 case 330: { input.readMessage( getPrecisionTimestampTzFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 41; break; } // case 330 case 338: { input.readMessage( getIntervalCompoundFieldBuilder().getBuilder(), extensionRegistry); kindCase_ = 42; break; } // case 338 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag } break; } // default: } // switch (tag) } // while (!done) } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.unwrapIOException(); } finally { onChanged(); } // finally return this; } private int kindCase_ = 0; private java.lang.Object kind_; public KindCase getKindCase() { return KindCase.forNumber( kindCase_); } public Builder clearKind() { kindCase_ = 0; kind_ = null; onChanged(); return this; } private int bitField0_; private int bitField1_; private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Boolean, io.substrait.proto.Type.Boolean.Builder, io.substrait.proto.Type.BooleanOrBuilder> boolBuilder_; /** * .substrait.Type.Boolean bool = 1; * @return Whether the bool field is set. */ @java.lang.Override public boolean hasBool() { return kindCase_ == 1; } /** * .substrait.Type.Boolean bool = 1; * @return The bool. */ @java.lang.Override public io.substrait.proto.Type.Boolean getBool() { if (boolBuilder_ == null) { if (kindCase_ == 1) { return (io.substrait.proto.Type.Boolean) kind_; } return io.substrait.proto.Type.Boolean.getDefaultInstance(); } else { if (kindCase_ == 1) { return boolBuilder_.getMessage(); } return io.substrait.proto.Type.Boolean.getDefaultInstance(); } } /** * .substrait.Type.Boolean bool = 1; */ public Builder setBool(io.substrait.proto.Type.Boolean value) { if (boolBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { boolBuilder_.setMessage(value); } kindCase_ = 1; return this; } /** * .substrait.Type.Boolean bool = 1; */ public Builder setBool( io.substrait.proto.Type.Boolean.Builder builderForValue) { if (boolBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { boolBuilder_.setMessage(builderForValue.build()); } kindCase_ = 1; return this; } /** * .substrait.Type.Boolean bool = 1; */ public Builder mergeBool(io.substrait.proto.Type.Boolean value) { if (boolBuilder_ == null) { if (kindCase_ == 1 && kind_ != io.substrait.proto.Type.Boolean.getDefaultInstance()) { kind_ = io.substrait.proto.Type.Boolean.newBuilder((io.substrait.proto.Type.Boolean) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 1) { boolBuilder_.mergeFrom(value); } else { boolBuilder_.setMessage(value); } } kindCase_ = 1; return this; } /** * .substrait.Type.Boolean bool = 1; */ public Builder clearBool() { if (boolBuilder_ == null) { if (kindCase_ == 1) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 1) { kindCase_ = 0; kind_ = null; } boolBuilder_.clear(); } return this; } /** * .substrait.Type.Boolean bool = 1; */ public io.substrait.proto.Type.Boolean.Builder getBoolBuilder() { return getBoolFieldBuilder().getBuilder(); } /** * .substrait.Type.Boolean bool = 1; */ @java.lang.Override public io.substrait.proto.Type.BooleanOrBuilder getBoolOrBuilder() { if ((kindCase_ == 1) && (boolBuilder_ != null)) { return boolBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 1) { return (io.substrait.proto.Type.Boolean) kind_; } return io.substrait.proto.Type.Boolean.getDefaultInstance(); } } /** * .substrait.Type.Boolean bool = 1; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Boolean, io.substrait.proto.Type.Boolean.Builder, io.substrait.proto.Type.BooleanOrBuilder> getBoolFieldBuilder() { if (boolBuilder_ == null) { if (!(kindCase_ == 1)) { kind_ = io.substrait.proto.Type.Boolean.getDefaultInstance(); } boolBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Boolean, io.substrait.proto.Type.Boolean.Builder, io.substrait.proto.Type.BooleanOrBuilder>( (io.substrait.proto.Type.Boolean) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 1; onChanged(); return boolBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I8, io.substrait.proto.Type.I8.Builder, io.substrait.proto.Type.I8OrBuilder> i8Builder_; /** * .substrait.Type.I8 i8 = 2; * @return Whether the i8 field is set. */ @java.lang.Override public boolean hasI8() { return kindCase_ == 2; } /** * .substrait.Type.I8 i8 = 2; * @return The i8. */ @java.lang.Override public io.substrait.proto.Type.I8 getI8() { if (i8Builder_ == null) { if (kindCase_ == 2) { return (io.substrait.proto.Type.I8) kind_; } return io.substrait.proto.Type.I8.getDefaultInstance(); } else { if (kindCase_ == 2) { return i8Builder_.getMessage(); } return io.substrait.proto.Type.I8.getDefaultInstance(); } } /** * .substrait.Type.I8 i8 = 2; */ public Builder setI8(io.substrait.proto.Type.I8 value) { if (i8Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { i8Builder_.setMessage(value); } kindCase_ = 2; return this; } /** * .substrait.Type.I8 i8 = 2; */ public Builder setI8( io.substrait.proto.Type.I8.Builder builderForValue) { if (i8Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { i8Builder_.setMessage(builderForValue.build()); } kindCase_ = 2; return this; } /** * .substrait.Type.I8 i8 = 2; */ public Builder mergeI8(io.substrait.proto.Type.I8 value) { if (i8Builder_ == null) { if (kindCase_ == 2 && kind_ != io.substrait.proto.Type.I8.getDefaultInstance()) { kind_ = io.substrait.proto.Type.I8.newBuilder((io.substrait.proto.Type.I8) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 2) { i8Builder_.mergeFrom(value); } else { i8Builder_.setMessage(value); } } kindCase_ = 2; return this; } /** * .substrait.Type.I8 i8 = 2; */ public Builder clearI8() { if (i8Builder_ == null) { if (kindCase_ == 2) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 2) { kindCase_ = 0; kind_ = null; } i8Builder_.clear(); } return this; } /** * .substrait.Type.I8 i8 = 2; */ public io.substrait.proto.Type.I8.Builder getI8Builder() { return getI8FieldBuilder().getBuilder(); } /** * .substrait.Type.I8 i8 = 2; */ @java.lang.Override public io.substrait.proto.Type.I8OrBuilder getI8OrBuilder() { if ((kindCase_ == 2) && (i8Builder_ != null)) { return i8Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 2) { return (io.substrait.proto.Type.I8) kind_; } return io.substrait.proto.Type.I8.getDefaultInstance(); } } /** * .substrait.Type.I8 i8 = 2; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I8, io.substrait.proto.Type.I8.Builder, io.substrait.proto.Type.I8OrBuilder> getI8FieldBuilder() { if (i8Builder_ == null) { if (!(kindCase_ == 2)) { kind_ = io.substrait.proto.Type.I8.getDefaultInstance(); } i8Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I8, io.substrait.proto.Type.I8.Builder, io.substrait.proto.Type.I8OrBuilder>( (io.substrait.proto.Type.I8) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 2; onChanged(); return i8Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I16, io.substrait.proto.Type.I16.Builder, io.substrait.proto.Type.I16OrBuilder> i16Builder_; /** * .substrait.Type.I16 i16 = 3; * @return Whether the i16 field is set. */ @java.lang.Override public boolean hasI16() { return kindCase_ == 3; } /** * .substrait.Type.I16 i16 = 3; * @return The i16. */ @java.lang.Override public io.substrait.proto.Type.I16 getI16() { if (i16Builder_ == null) { if (kindCase_ == 3) { return (io.substrait.proto.Type.I16) kind_; } return io.substrait.proto.Type.I16.getDefaultInstance(); } else { if (kindCase_ == 3) { return i16Builder_.getMessage(); } return io.substrait.proto.Type.I16.getDefaultInstance(); } } /** * .substrait.Type.I16 i16 = 3; */ public Builder setI16(io.substrait.proto.Type.I16 value) { if (i16Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { i16Builder_.setMessage(value); } kindCase_ = 3; return this; } /** * .substrait.Type.I16 i16 = 3; */ public Builder setI16( io.substrait.proto.Type.I16.Builder builderForValue) { if (i16Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { i16Builder_.setMessage(builderForValue.build()); } kindCase_ = 3; return this; } /** * .substrait.Type.I16 i16 = 3; */ public Builder mergeI16(io.substrait.proto.Type.I16 value) { if (i16Builder_ == null) { if (kindCase_ == 3 && kind_ != io.substrait.proto.Type.I16.getDefaultInstance()) { kind_ = io.substrait.proto.Type.I16.newBuilder((io.substrait.proto.Type.I16) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 3) { i16Builder_.mergeFrom(value); } else { i16Builder_.setMessage(value); } } kindCase_ = 3; return this; } /** * .substrait.Type.I16 i16 = 3; */ public Builder clearI16() { if (i16Builder_ == null) { if (kindCase_ == 3) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 3) { kindCase_ = 0; kind_ = null; } i16Builder_.clear(); } return this; } /** * .substrait.Type.I16 i16 = 3; */ public io.substrait.proto.Type.I16.Builder getI16Builder() { return getI16FieldBuilder().getBuilder(); } /** * .substrait.Type.I16 i16 = 3; */ @java.lang.Override public io.substrait.proto.Type.I16OrBuilder getI16OrBuilder() { if ((kindCase_ == 3) && (i16Builder_ != null)) { return i16Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 3) { return (io.substrait.proto.Type.I16) kind_; } return io.substrait.proto.Type.I16.getDefaultInstance(); } } /** * .substrait.Type.I16 i16 = 3; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I16, io.substrait.proto.Type.I16.Builder, io.substrait.proto.Type.I16OrBuilder> getI16FieldBuilder() { if (i16Builder_ == null) { if (!(kindCase_ == 3)) { kind_ = io.substrait.proto.Type.I16.getDefaultInstance(); } i16Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I16, io.substrait.proto.Type.I16.Builder, io.substrait.proto.Type.I16OrBuilder>( (io.substrait.proto.Type.I16) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 3; onChanged(); return i16Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I32, io.substrait.proto.Type.I32.Builder, io.substrait.proto.Type.I32OrBuilder> i32Builder_; /** * .substrait.Type.I32 i32 = 5; * @return Whether the i32 field is set. */ @java.lang.Override public boolean hasI32() { return kindCase_ == 5; } /** * .substrait.Type.I32 i32 = 5; * @return The i32. */ @java.lang.Override public io.substrait.proto.Type.I32 getI32() { if (i32Builder_ == null) { if (kindCase_ == 5) { return (io.substrait.proto.Type.I32) kind_; } return io.substrait.proto.Type.I32.getDefaultInstance(); } else { if (kindCase_ == 5) { return i32Builder_.getMessage(); } return io.substrait.proto.Type.I32.getDefaultInstance(); } } /** * .substrait.Type.I32 i32 = 5; */ public Builder setI32(io.substrait.proto.Type.I32 value) { if (i32Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { i32Builder_.setMessage(value); } kindCase_ = 5; return this; } /** * .substrait.Type.I32 i32 = 5; */ public Builder setI32( io.substrait.proto.Type.I32.Builder builderForValue) { if (i32Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { i32Builder_.setMessage(builderForValue.build()); } kindCase_ = 5; return this; } /** * .substrait.Type.I32 i32 = 5; */ public Builder mergeI32(io.substrait.proto.Type.I32 value) { if (i32Builder_ == null) { if (kindCase_ == 5 && kind_ != io.substrait.proto.Type.I32.getDefaultInstance()) { kind_ = io.substrait.proto.Type.I32.newBuilder((io.substrait.proto.Type.I32) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 5) { i32Builder_.mergeFrom(value); } else { i32Builder_.setMessage(value); } } kindCase_ = 5; return this; } /** * .substrait.Type.I32 i32 = 5; */ public Builder clearI32() { if (i32Builder_ == null) { if (kindCase_ == 5) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 5) { kindCase_ = 0; kind_ = null; } i32Builder_.clear(); } return this; } /** * .substrait.Type.I32 i32 = 5; */ public io.substrait.proto.Type.I32.Builder getI32Builder() { return getI32FieldBuilder().getBuilder(); } /** * .substrait.Type.I32 i32 = 5; */ @java.lang.Override public io.substrait.proto.Type.I32OrBuilder getI32OrBuilder() { if ((kindCase_ == 5) && (i32Builder_ != null)) { return i32Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 5) { return (io.substrait.proto.Type.I32) kind_; } return io.substrait.proto.Type.I32.getDefaultInstance(); } } /** * .substrait.Type.I32 i32 = 5; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I32, io.substrait.proto.Type.I32.Builder, io.substrait.proto.Type.I32OrBuilder> getI32FieldBuilder() { if (i32Builder_ == null) { if (!(kindCase_ == 5)) { kind_ = io.substrait.proto.Type.I32.getDefaultInstance(); } i32Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I32, io.substrait.proto.Type.I32.Builder, io.substrait.proto.Type.I32OrBuilder>( (io.substrait.proto.Type.I32) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 5; onChanged(); return i32Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I64, io.substrait.proto.Type.I64.Builder, io.substrait.proto.Type.I64OrBuilder> i64Builder_; /** * .substrait.Type.I64 i64 = 7; * @return Whether the i64 field is set. */ @java.lang.Override public boolean hasI64() { return kindCase_ == 7; } /** * .substrait.Type.I64 i64 = 7; * @return The i64. */ @java.lang.Override public io.substrait.proto.Type.I64 getI64() { if (i64Builder_ == null) { if (kindCase_ == 7) { return (io.substrait.proto.Type.I64) kind_; } return io.substrait.proto.Type.I64.getDefaultInstance(); } else { if (kindCase_ == 7) { return i64Builder_.getMessage(); } return io.substrait.proto.Type.I64.getDefaultInstance(); } } /** * .substrait.Type.I64 i64 = 7; */ public Builder setI64(io.substrait.proto.Type.I64 value) { if (i64Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { i64Builder_.setMessage(value); } kindCase_ = 7; return this; } /** * .substrait.Type.I64 i64 = 7; */ public Builder setI64( io.substrait.proto.Type.I64.Builder builderForValue) { if (i64Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { i64Builder_.setMessage(builderForValue.build()); } kindCase_ = 7; return this; } /** * .substrait.Type.I64 i64 = 7; */ public Builder mergeI64(io.substrait.proto.Type.I64 value) { if (i64Builder_ == null) { if (kindCase_ == 7 && kind_ != io.substrait.proto.Type.I64.getDefaultInstance()) { kind_ = io.substrait.proto.Type.I64.newBuilder((io.substrait.proto.Type.I64) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 7) { i64Builder_.mergeFrom(value); } else { i64Builder_.setMessage(value); } } kindCase_ = 7; return this; } /** * .substrait.Type.I64 i64 = 7; */ public Builder clearI64() { if (i64Builder_ == null) { if (kindCase_ == 7) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 7) { kindCase_ = 0; kind_ = null; } i64Builder_.clear(); } return this; } /** * .substrait.Type.I64 i64 = 7; */ public io.substrait.proto.Type.I64.Builder getI64Builder() { return getI64FieldBuilder().getBuilder(); } /** * .substrait.Type.I64 i64 = 7; */ @java.lang.Override public io.substrait.proto.Type.I64OrBuilder getI64OrBuilder() { if ((kindCase_ == 7) && (i64Builder_ != null)) { return i64Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 7) { return (io.substrait.proto.Type.I64) kind_; } return io.substrait.proto.Type.I64.getDefaultInstance(); } } /** * .substrait.Type.I64 i64 = 7; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I64, io.substrait.proto.Type.I64.Builder, io.substrait.proto.Type.I64OrBuilder> getI64FieldBuilder() { if (i64Builder_ == null) { if (!(kindCase_ == 7)) { kind_ = io.substrait.proto.Type.I64.getDefaultInstance(); } i64Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.I64, io.substrait.proto.Type.I64.Builder, io.substrait.proto.Type.I64OrBuilder>( (io.substrait.proto.Type.I64) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 7; onChanged(); return i64Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP32, io.substrait.proto.Type.FP32.Builder, io.substrait.proto.Type.FP32OrBuilder> fp32Builder_; /** * .substrait.Type.FP32 fp32 = 10; * @return Whether the fp32 field is set. */ @java.lang.Override public boolean hasFp32() { return kindCase_ == 10; } /** * .substrait.Type.FP32 fp32 = 10; * @return The fp32. */ @java.lang.Override public io.substrait.proto.Type.FP32 getFp32() { if (fp32Builder_ == null) { if (kindCase_ == 10) { return (io.substrait.proto.Type.FP32) kind_; } return io.substrait.proto.Type.FP32.getDefaultInstance(); } else { if (kindCase_ == 10) { return fp32Builder_.getMessage(); } return io.substrait.proto.Type.FP32.getDefaultInstance(); } } /** * .substrait.Type.FP32 fp32 = 10; */ public Builder setFp32(io.substrait.proto.Type.FP32 value) { if (fp32Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { fp32Builder_.setMessage(value); } kindCase_ = 10; return this; } /** * .substrait.Type.FP32 fp32 = 10; */ public Builder setFp32( io.substrait.proto.Type.FP32.Builder builderForValue) { if (fp32Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { fp32Builder_.setMessage(builderForValue.build()); } kindCase_ = 10; return this; } /** * .substrait.Type.FP32 fp32 = 10; */ public Builder mergeFp32(io.substrait.proto.Type.FP32 value) { if (fp32Builder_ == null) { if (kindCase_ == 10 && kind_ != io.substrait.proto.Type.FP32.getDefaultInstance()) { kind_ = io.substrait.proto.Type.FP32.newBuilder((io.substrait.proto.Type.FP32) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 10) { fp32Builder_.mergeFrom(value); } else { fp32Builder_.setMessage(value); } } kindCase_ = 10; return this; } /** * .substrait.Type.FP32 fp32 = 10; */ public Builder clearFp32() { if (fp32Builder_ == null) { if (kindCase_ == 10) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 10) { kindCase_ = 0; kind_ = null; } fp32Builder_.clear(); } return this; } /** * .substrait.Type.FP32 fp32 = 10; */ public io.substrait.proto.Type.FP32.Builder getFp32Builder() { return getFp32FieldBuilder().getBuilder(); } /** * .substrait.Type.FP32 fp32 = 10; */ @java.lang.Override public io.substrait.proto.Type.FP32OrBuilder getFp32OrBuilder() { if ((kindCase_ == 10) && (fp32Builder_ != null)) { return fp32Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 10) { return (io.substrait.proto.Type.FP32) kind_; } return io.substrait.proto.Type.FP32.getDefaultInstance(); } } /** * .substrait.Type.FP32 fp32 = 10; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP32, io.substrait.proto.Type.FP32.Builder, io.substrait.proto.Type.FP32OrBuilder> getFp32FieldBuilder() { if (fp32Builder_ == null) { if (!(kindCase_ == 10)) { kind_ = io.substrait.proto.Type.FP32.getDefaultInstance(); } fp32Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP32, io.substrait.proto.Type.FP32.Builder, io.substrait.proto.Type.FP32OrBuilder>( (io.substrait.proto.Type.FP32) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 10; onChanged(); return fp32Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP64, io.substrait.proto.Type.FP64.Builder, io.substrait.proto.Type.FP64OrBuilder> fp64Builder_; /** * .substrait.Type.FP64 fp64 = 11; * @return Whether the fp64 field is set. */ @java.lang.Override public boolean hasFp64() { return kindCase_ == 11; } /** * .substrait.Type.FP64 fp64 = 11; * @return The fp64. */ @java.lang.Override public io.substrait.proto.Type.FP64 getFp64() { if (fp64Builder_ == null) { if (kindCase_ == 11) { return (io.substrait.proto.Type.FP64) kind_; } return io.substrait.proto.Type.FP64.getDefaultInstance(); } else { if (kindCase_ == 11) { return fp64Builder_.getMessage(); } return io.substrait.proto.Type.FP64.getDefaultInstance(); } } /** * .substrait.Type.FP64 fp64 = 11; */ public Builder setFp64(io.substrait.proto.Type.FP64 value) { if (fp64Builder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { fp64Builder_.setMessage(value); } kindCase_ = 11; return this; } /** * .substrait.Type.FP64 fp64 = 11; */ public Builder setFp64( io.substrait.proto.Type.FP64.Builder builderForValue) { if (fp64Builder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { fp64Builder_.setMessage(builderForValue.build()); } kindCase_ = 11; return this; } /** * .substrait.Type.FP64 fp64 = 11; */ public Builder mergeFp64(io.substrait.proto.Type.FP64 value) { if (fp64Builder_ == null) { if (kindCase_ == 11 && kind_ != io.substrait.proto.Type.FP64.getDefaultInstance()) { kind_ = io.substrait.proto.Type.FP64.newBuilder((io.substrait.proto.Type.FP64) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 11) { fp64Builder_.mergeFrom(value); } else { fp64Builder_.setMessage(value); } } kindCase_ = 11; return this; } /** * .substrait.Type.FP64 fp64 = 11; */ public Builder clearFp64() { if (fp64Builder_ == null) { if (kindCase_ == 11) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 11) { kindCase_ = 0; kind_ = null; } fp64Builder_.clear(); } return this; } /** * .substrait.Type.FP64 fp64 = 11; */ public io.substrait.proto.Type.FP64.Builder getFp64Builder() { return getFp64FieldBuilder().getBuilder(); } /** * .substrait.Type.FP64 fp64 = 11; */ @java.lang.Override public io.substrait.proto.Type.FP64OrBuilder getFp64OrBuilder() { if ((kindCase_ == 11) && (fp64Builder_ != null)) { return fp64Builder_.getMessageOrBuilder(); } else { if (kindCase_ == 11) { return (io.substrait.proto.Type.FP64) kind_; } return io.substrait.proto.Type.FP64.getDefaultInstance(); } } /** * .substrait.Type.FP64 fp64 = 11; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP64, io.substrait.proto.Type.FP64.Builder, io.substrait.proto.Type.FP64OrBuilder> getFp64FieldBuilder() { if (fp64Builder_ == null) { if (!(kindCase_ == 11)) { kind_ = io.substrait.proto.Type.FP64.getDefaultInstance(); } fp64Builder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.FP64, io.substrait.proto.Type.FP64.Builder, io.substrait.proto.Type.FP64OrBuilder>( (io.substrait.proto.Type.FP64) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 11; onChanged(); return fp64Builder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.String, io.substrait.proto.Type.String.Builder, io.substrait.proto.Type.StringOrBuilder> stringBuilder_; /** * .substrait.Type.String string = 12; * @return Whether the string field is set. */ @java.lang.Override public boolean hasString() { return kindCase_ == 12; } /** * .substrait.Type.String string = 12; * @return The string. */ @java.lang.Override public io.substrait.proto.Type.String getString() { if (stringBuilder_ == null) { if (kindCase_ == 12) { return (io.substrait.proto.Type.String) kind_; } return io.substrait.proto.Type.String.getDefaultInstance(); } else { if (kindCase_ == 12) { return stringBuilder_.getMessage(); } return io.substrait.proto.Type.String.getDefaultInstance(); } } /** * .substrait.Type.String string = 12; */ public Builder setString(io.substrait.proto.Type.String value) { if (stringBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { stringBuilder_.setMessage(value); } kindCase_ = 12; return this; } /** * .substrait.Type.String string = 12; */ public Builder setString( io.substrait.proto.Type.String.Builder builderForValue) { if (stringBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { stringBuilder_.setMessage(builderForValue.build()); } kindCase_ = 12; return this; } /** * .substrait.Type.String string = 12; */ public Builder mergeString(io.substrait.proto.Type.String value) { if (stringBuilder_ == null) { if (kindCase_ == 12 && kind_ != io.substrait.proto.Type.String.getDefaultInstance()) { kind_ = io.substrait.proto.Type.String.newBuilder((io.substrait.proto.Type.String) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 12) { stringBuilder_.mergeFrom(value); } else { stringBuilder_.setMessage(value); } } kindCase_ = 12; return this; } /** * .substrait.Type.String string = 12; */ public Builder clearString() { if (stringBuilder_ == null) { if (kindCase_ == 12) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 12) { kindCase_ = 0; kind_ = null; } stringBuilder_.clear(); } return this; } /** * .substrait.Type.String string = 12; */ public io.substrait.proto.Type.String.Builder getStringBuilder() { return getStringFieldBuilder().getBuilder(); } /** * .substrait.Type.String string = 12; */ @java.lang.Override public io.substrait.proto.Type.StringOrBuilder getStringOrBuilder() { if ((kindCase_ == 12) && (stringBuilder_ != null)) { return stringBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 12) { return (io.substrait.proto.Type.String) kind_; } return io.substrait.proto.Type.String.getDefaultInstance(); } } /** * .substrait.Type.String string = 12; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.String, io.substrait.proto.Type.String.Builder, io.substrait.proto.Type.StringOrBuilder> getStringFieldBuilder() { if (stringBuilder_ == null) { if (!(kindCase_ == 12)) { kind_ = io.substrait.proto.Type.String.getDefaultInstance(); } stringBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.String, io.substrait.proto.Type.String.Builder, io.substrait.proto.Type.StringOrBuilder>( (io.substrait.proto.Type.String) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 12; onChanged(); return stringBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Binary, io.substrait.proto.Type.Binary.Builder, io.substrait.proto.Type.BinaryOrBuilder> binaryBuilder_; /** * .substrait.Type.Binary binary = 13; * @return Whether the binary field is set. */ @java.lang.Override public boolean hasBinary() { return kindCase_ == 13; } /** * .substrait.Type.Binary binary = 13; * @return The binary. */ @java.lang.Override public io.substrait.proto.Type.Binary getBinary() { if (binaryBuilder_ == null) { if (kindCase_ == 13) { return (io.substrait.proto.Type.Binary) kind_; } return io.substrait.proto.Type.Binary.getDefaultInstance(); } else { if (kindCase_ == 13) { return binaryBuilder_.getMessage(); } return io.substrait.proto.Type.Binary.getDefaultInstance(); } } /** * .substrait.Type.Binary binary = 13; */ public Builder setBinary(io.substrait.proto.Type.Binary value) { if (binaryBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { binaryBuilder_.setMessage(value); } kindCase_ = 13; return this; } /** * .substrait.Type.Binary binary = 13; */ public Builder setBinary( io.substrait.proto.Type.Binary.Builder builderForValue) { if (binaryBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { binaryBuilder_.setMessage(builderForValue.build()); } kindCase_ = 13; return this; } /** * .substrait.Type.Binary binary = 13; */ public Builder mergeBinary(io.substrait.proto.Type.Binary value) { if (binaryBuilder_ == null) { if (kindCase_ == 13 && kind_ != io.substrait.proto.Type.Binary.getDefaultInstance()) { kind_ = io.substrait.proto.Type.Binary.newBuilder((io.substrait.proto.Type.Binary) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 13) { binaryBuilder_.mergeFrom(value); } else { binaryBuilder_.setMessage(value); } } kindCase_ = 13; return this; } /** * .substrait.Type.Binary binary = 13; */ public Builder clearBinary() { if (binaryBuilder_ == null) { if (kindCase_ == 13) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 13) { kindCase_ = 0; kind_ = null; } binaryBuilder_.clear(); } return this; } /** * .substrait.Type.Binary binary = 13; */ public io.substrait.proto.Type.Binary.Builder getBinaryBuilder() { return getBinaryFieldBuilder().getBuilder(); } /** * .substrait.Type.Binary binary = 13; */ @java.lang.Override public io.substrait.proto.Type.BinaryOrBuilder getBinaryOrBuilder() { if ((kindCase_ == 13) && (binaryBuilder_ != null)) { return binaryBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 13) { return (io.substrait.proto.Type.Binary) kind_; } return io.substrait.proto.Type.Binary.getDefaultInstance(); } } /** * .substrait.Type.Binary binary = 13; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Binary, io.substrait.proto.Type.Binary.Builder, io.substrait.proto.Type.BinaryOrBuilder> getBinaryFieldBuilder() { if (binaryBuilder_ == null) { if (!(kindCase_ == 13)) { kind_ = io.substrait.proto.Type.Binary.getDefaultInstance(); } binaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Binary, io.substrait.proto.Type.Binary.Builder, io.substrait.proto.Type.BinaryOrBuilder>( (io.substrait.proto.Type.Binary) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 13; onChanged(); return binaryBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Timestamp, io.substrait.proto.Type.Timestamp.Builder, io.substrait.proto.Type.TimestampOrBuilder> timestampBuilder_; /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp is deprecated. * See substrait/type_expressions.proto;l=24 * @return Whether the timestamp field is set. */ @java.lang.Override @java.lang.Deprecated public boolean hasTimestamp() { return kindCase_ == 14; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp is deprecated. * See substrait/type_expressions.proto;l=24 * @return The timestamp. */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.Timestamp getTimestamp() { if (timestampBuilder_ == null) { if (kindCase_ == 14) { return (io.substrait.proto.Type.Timestamp) kind_; } return io.substrait.proto.Type.Timestamp.getDefaultInstance(); } else { if (kindCase_ == 14) { return timestampBuilder_.getMessage(); } return io.substrait.proto.Type.Timestamp.getDefaultInstance(); } } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Deprecated public Builder setTimestamp(io.substrait.proto.Type.Timestamp value) { if (timestampBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { timestampBuilder_.setMessage(value); } kindCase_ = 14; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Deprecated public Builder setTimestamp( io.substrait.proto.Type.Timestamp.Builder builderForValue) { if (timestampBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { timestampBuilder_.setMessage(builderForValue.build()); } kindCase_ = 14; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Deprecated public Builder mergeTimestamp(io.substrait.proto.Type.Timestamp value) { if (timestampBuilder_ == null) { if (kindCase_ == 14 && kind_ != io.substrait.proto.Type.Timestamp.getDefaultInstance()) { kind_ = io.substrait.proto.Type.Timestamp.newBuilder((io.substrait.proto.Type.Timestamp) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 14) { timestampBuilder_.mergeFrom(value); } else { timestampBuilder_.setMessage(value); } } kindCase_ = 14; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Deprecated public Builder clearTimestamp() { if (timestampBuilder_ == null) { if (kindCase_ == 14) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 14) { kindCase_ = 0; kind_ = null; } timestampBuilder_.clear(); } return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Deprecated public io.substrait.proto.Type.Timestamp.Builder getTimestampBuilder() { return getTimestampFieldBuilder().getBuilder(); } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampOrBuilder getTimestampOrBuilder() { if ((kindCase_ == 14) && (timestampBuilder_ != null)) { return timestampBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 14) { return (io.substrait.proto.Type.Timestamp) kind_; } return io.substrait.proto.Type.Timestamp.getDefaultInstance(); } } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestamp precision_timestamp`
     * 
* * .substrait.Type.Timestamp timestamp = 14 [deprecated = true]; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Timestamp, io.substrait.proto.Type.Timestamp.Builder, io.substrait.proto.Type.TimestampOrBuilder> getTimestampFieldBuilder() { if (timestampBuilder_ == null) { if (!(kindCase_ == 14)) { kind_ = io.substrait.proto.Type.Timestamp.getDefaultInstance(); } timestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Timestamp, io.substrait.proto.Type.Timestamp.Builder, io.substrait.proto.Type.TimestampOrBuilder>( (io.substrait.proto.Type.Timestamp) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 14; onChanged(); return timestampBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Date, io.substrait.proto.Type.Date.Builder, io.substrait.proto.Type.DateOrBuilder> dateBuilder_; /** * .substrait.Type.Date date = 16; * @return Whether the date field is set. */ @java.lang.Override public boolean hasDate() { return kindCase_ == 16; } /** * .substrait.Type.Date date = 16; * @return The date. */ @java.lang.Override public io.substrait.proto.Type.Date getDate() { if (dateBuilder_ == null) { if (kindCase_ == 16) { return (io.substrait.proto.Type.Date) kind_; } return io.substrait.proto.Type.Date.getDefaultInstance(); } else { if (kindCase_ == 16) { return dateBuilder_.getMessage(); } return io.substrait.proto.Type.Date.getDefaultInstance(); } } /** * .substrait.Type.Date date = 16; */ public Builder setDate(io.substrait.proto.Type.Date value) { if (dateBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { dateBuilder_.setMessage(value); } kindCase_ = 16; return this; } /** * .substrait.Type.Date date = 16; */ public Builder setDate( io.substrait.proto.Type.Date.Builder builderForValue) { if (dateBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { dateBuilder_.setMessage(builderForValue.build()); } kindCase_ = 16; return this; } /** * .substrait.Type.Date date = 16; */ public Builder mergeDate(io.substrait.proto.Type.Date value) { if (dateBuilder_ == null) { if (kindCase_ == 16 && kind_ != io.substrait.proto.Type.Date.getDefaultInstance()) { kind_ = io.substrait.proto.Type.Date.newBuilder((io.substrait.proto.Type.Date) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 16) { dateBuilder_.mergeFrom(value); } else { dateBuilder_.setMessage(value); } } kindCase_ = 16; return this; } /** * .substrait.Type.Date date = 16; */ public Builder clearDate() { if (dateBuilder_ == null) { if (kindCase_ == 16) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 16) { kindCase_ = 0; kind_ = null; } dateBuilder_.clear(); } return this; } /** * .substrait.Type.Date date = 16; */ public io.substrait.proto.Type.Date.Builder getDateBuilder() { return getDateFieldBuilder().getBuilder(); } /** * .substrait.Type.Date date = 16; */ @java.lang.Override public io.substrait.proto.Type.DateOrBuilder getDateOrBuilder() { if ((kindCase_ == 16) && (dateBuilder_ != null)) { return dateBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 16) { return (io.substrait.proto.Type.Date) kind_; } return io.substrait.proto.Type.Date.getDefaultInstance(); } } /** * .substrait.Type.Date date = 16; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Date, io.substrait.proto.Type.Date.Builder, io.substrait.proto.Type.DateOrBuilder> getDateFieldBuilder() { if (dateBuilder_ == null) { if (!(kindCase_ == 16)) { kind_ = io.substrait.proto.Type.Date.getDefaultInstance(); } dateBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Date, io.substrait.proto.Type.Date.Builder, io.substrait.proto.Type.DateOrBuilder>( (io.substrait.proto.Type.Date) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 16; onChanged(); return dateBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Time, io.substrait.proto.Type.Time.Builder, io.substrait.proto.Type.TimeOrBuilder> timeBuilder_; /** * .substrait.Type.Time time = 17; * @return Whether the time field is set. */ @java.lang.Override public boolean hasTime() { return kindCase_ == 17; } /** * .substrait.Type.Time time = 17; * @return The time. */ @java.lang.Override public io.substrait.proto.Type.Time getTime() { if (timeBuilder_ == null) { if (kindCase_ == 17) { return (io.substrait.proto.Type.Time) kind_; } return io.substrait.proto.Type.Time.getDefaultInstance(); } else { if (kindCase_ == 17) { return timeBuilder_.getMessage(); } return io.substrait.proto.Type.Time.getDefaultInstance(); } } /** * .substrait.Type.Time time = 17; */ public Builder setTime(io.substrait.proto.Type.Time value) { if (timeBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { timeBuilder_.setMessage(value); } kindCase_ = 17; return this; } /** * .substrait.Type.Time time = 17; */ public Builder setTime( io.substrait.proto.Type.Time.Builder builderForValue) { if (timeBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { timeBuilder_.setMessage(builderForValue.build()); } kindCase_ = 17; return this; } /** * .substrait.Type.Time time = 17; */ public Builder mergeTime(io.substrait.proto.Type.Time value) { if (timeBuilder_ == null) { if (kindCase_ == 17 && kind_ != io.substrait.proto.Type.Time.getDefaultInstance()) { kind_ = io.substrait.proto.Type.Time.newBuilder((io.substrait.proto.Type.Time) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 17) { timeBuilder_.mergeFrom(value); } else { timeBuilder_.setMessage(value); } } kindCase_ = 17; return this; } /** * .substrait.Type.Time time = 17; */ public Builder clearTime() { if (timeBuilder_ == null) { if (kindCase_ == 17) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 17) { kindCase_ = 0; kind_ = null; } timeBuilder_.clear(); } return this; } /** * .substrait.Type.Time time = 17; */ public io.substrait.proto.Type.Time.Builder getTimeBuilder() { return getTimeFieldBuilder().getBuilder(); } /** * .substrait.Type.Time time = 17; */ @java.lang.Override public io.substrait.proto.Type.TimeOrBuilder getTimeOrBuilder() { if ((kindCase_ == 17) && (timeBuilder_ != null)) { return timeBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 17) { return (io.substrait.proto.Type.Time) kind_; } return io.substrait.proto.Type.Time.getDefaultInstance(); } } /** * .substrait.Type.Time time = 17; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Time, io.substrait.proto.Type.Time.Builder, io.substrait.proto.Type.TimeOrBuilder> getTimeFieldBuilder() { if (timeBuilder_ == null) { if (!(kindCase_ == 17)) { kind_ = io.substrait.proto.Type.Time.getDefaultInstance(); } timeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.Time, io.substrait.proto.Type.Time.Builder, io.substrait.proto.Type.TimeOrBuilder>( (io.substrait.proto.Type.Time) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 17; onChanged(); return timeBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.IntervalYear, io.substrait.proto.Type.IntervalYear.Builder, io.substrait.proto.Type.IntervalYearOrBuilder> intervalYearBuilder_; /** * .substrait.Type.IntervalYear interval_year = 19; * @return Whether the intervalYear field is set. */ @java.lang.Override public boolean hasIntervalYear() { return kindCase_ == 19; } /** * .substrait.Type.IntervalYear interval_year = 19; * @return The intervalYear. */ @java.lang.Override public io.substrait.proto.Type.IntervalYear getIntervalYear() { if (intervalYearBuilder_ == null) { if (kindCase_ == 19) { return (io.substrait.proto.Type.IntervalYear) kind_; } return io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } else { if (kindCase_ == 19) { return intervalYearBuilder_.getMessage(); } return io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } } /** * .substrait.Type.IntervalYear interval_year = 19; */ public Builder setIntervalYear(io.substrait.proto.Type.IntervalYear value) { if (intervalYearBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { intervalYearBuilder_.setMessage(value); } kindCase_ = 19; return this; } /** * .substrait.Type.IntervalYear interval_year = 19; */ public Builder setIntervalYear( io.substrait.proto.Type.IntervalYear.Builder builderForValue) { if (intervalYearBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { intervalYearBuilder_.setMessage(builderForValue.build()); } kindCase_ = 19; return this; } /** * .substrait.Type.IntervalYear interval_year = 19; */ public Builder mergeIntervalYear(io.substrait.proto.Type.IntervalYear value) { if (intervalYearBuilder_ == null) { if (kindCase_ == 19 && kind_ != io.substrait.proto.Type.IntervalYear.getDefaultInstance()) { kind_ = io.substrait.proto.Type.IntervalYear.newBuilder((io.substrait.proto.Type.IntervalYear) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 19) { intervalYearBuilder_.mergeFrom(value); } else { intervalYearBuilder_.setMessage(value); } } kindCase_ = 19; return this; } /** * .substrait.Type.IntervalYear interval_year = 19; */ public Builder clearIntervalYear() { if (intervalYearBuilder_ == null) { if (kindCase_ == 19) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 19) { kindCase_ = 0; kind_ = null; } intervalYearBuilder_.clear(); } return this; } /** * .substrait.Type.IntervalYear interval_year = 19; */ public io.substrait.proto.Type.IntervalYear.Builder getIntervalYearBuilder() { return getIntervalYearFieldBuilder().getBuilder(); } /** * .substrait.Type.IntervalYear interval_year = 19; */ @java.lang.Override public io.substrait.proto.Type.IntervalYearOrBuilder getIntervalYearOrBuilder() { if ((kindCase_ == 19) && (intervalYearBuilder_ != null)) { return intervalYearBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 19) { return (io.substrait.proto.Type.IntervalYear) kind_; } return io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } } /** * .substrait.Type.IntervalYear interval_year = 19; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.IntervalYear, io.substrait.proto.Type.IntervalYear.Builder, io.substrait.proto.Type.IntervalYearOrBuilder> getIntervalYearFieldBuilder() { if (intervalYearBuilder_ == null) { if (!(kindCase_ == 19)) { kind_ = io.substrait.proto.Type.IntervalYear.getDefaultInstance(); } intervalYearBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.IntervalYear, io.substrait.proto.Type.IntervalYear.Builder, io.substrait.proto.Type.IntervalYearOrBuilder>( (io.substrait.proto.Type.IntervalYear) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 19; onChanged(); return intervalYearBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.TimestampTZ, io.substrait.proto.Type.TimestampTZ.Builder, io.substrait.proto.Type.TimestampTZOrBuilder> timestampTzBuilder_; /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp_tz is deprecated. * See substrait/type_expressions.proto;l=29 * @return Whether the timestampTz field is set. */ @java.lang.Override @java.lang.Deprecated public boolean hasTimestampTz() { return kindCase_ == 29; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; * @deprecated substrait.DerivationExpression.timestamp_tz is deprecated. * See substrait/type_expressions.proto;l=29 * @return The timestampTz. */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampTZ getTimestampTz() { if (timestampTzBuilder_ == null) { if (kindCase_ == 29) { return (io.substrait.proto.Type.TimestampTZ) kind_; } return io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } else { if (kindCase_ == 29) { return timestampTzBuilder_.getMessage(); } return io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Deprecated public Builder setTimestampTz(io.substrait.proto.Type.TimestampTZ value) { if (timestampTzBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { timestampTzBuilder_.setMessage(value); } kindCase_ = 29; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Deprecated public Builder setTimestampTz( io.substrait.proto.Type.TimestampTZ.Builder builderForValue) { if (timestampTzBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { timestampTzBuilder_.setMessage(builderForValue.build()); } kindCase_ = 29; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Deprecated public Builder mergeTimestampTz(io.substrait.proto.Type.TimestampTZ value) { if (timestampTzBuilder_ == null) { if (kindCase_ == 29 && kind_ != io.substrait.proto.Type.TimestampTZ.getDefaultInstance()) { kind_ = io.substrait.proto.Type.TimestampTZ.newBuilder((io.substrait.proto.Type.TimestampTZ) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 29) { timestampTzBuilder_.mergeFrom(value); } else { timestampTzBuilder_.setMessage(value); } } kindCase_ = 29; return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Deprecated public Builder clearTimestampTz() { if (timestampTzBuilder_ == null) { if (kindCase_ == 29) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 29) { kindCase_ = 0; kind_ = null; } timestampTzBuilder_.clear(); } return this; } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Deprecated public io.substrait.proto.Type.TimestampTZ.Builder getTimestampTzBuilder() { return getTimestampTzFieldBuilder().getBuilder(); } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ @java.lang.Override @java.lang.Deprecated public io.substrait.proto.Type.TimestampTZOrBuilder getTimestampTzOrBuilder() { if ((kindCase_ == 29) && (timestampTzBuilder_ != null)) { return timestampTzBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 29) { return (io.substrait.proto.Type.TimestampTZ) kind_; } return io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } } /** *
     * Deprecated in favor of `ExpressionPrecisionTimestampTZ precision_timestamp_tz`
     * 
* * .substrait.Type.TimestampTZ timestamp_tz = 29 [deprecated = true]; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.TimestampTZ, io.substrait.proto.Type.TimestampTZ.Builder, io.substrait.proto.Type.TimestampTZOrBuilder> getTimestampTzFieldBuilder() { if (timestampTzBuilder_ == null) { if (!(kindCase_ == 29)) { kind_ = io.substrait.proto.Type.TimestampTZ.getDefaultInstance(); } timestampTzBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.TimestampTZ, io.substrait.proto.Type.TimestampTZ.Builder, io.substrait.proto.Type.TimestampTZOrBuilder>( (io.substrait.proto.Type.TimestampTZ) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 29; onChanged(); return timestampTzBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.UUID, io.substrait.proto.Type.UUID.Builder, io.substrait.proto.Type.UUIDOrBuilder> uuidBuilder_; /** * .substrait.Type.UUID uuid = 32; * @return Whether the uuid field is set. */ @java.lang.Override public boolean hasUuid() { return kindCase_ == 32; } /** * .substrait.Type.UUID uuid = 32; * @return The uuid. */ @java.lang.Override public io.substrait.proto.Type.UUID getUuid() { if (uuidBuilder_ == null) { if (kindCase_ == 32) { return (io.substrait.proto.Type.UUID) kind_; } return io.substrait.proto.Type.UUID.getDefaultInstance(); } else { if (kindCase_ == 32) { return uuidBuilder_.getMessage(); } return io.substrait.proto.Type.UUID.getDefaultInstance(); } } /** * .substrait.Type.UUID uuid = 32; */ public Builder setUuid(io.substrait.proto.Type.UUID value) { if (uuidBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { uuidBuilder_.setMessage(value); } kindCase_ = 32; return this; } /** * .substrait.Type.UUID uuid = 32; */ public Builder setUuid( io.substrait.proto.Type.UUID.Builder builderForValue) { if (uuidBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { uuidBuilder_.setMessage(builderForValue.build()); } kindCase_ = 32; return this; } /** * .substrait.Type.UUID uuid = 32; */ public Builder mergeUuid(io.substrait.proto.Type.UUID value) { if (uuidBuilder_ == null) { if (kindCase_ == 32 && kind_ != io.substrait.proto.Type.UUID.getDefaultInstance()) { kind_ = io.substrait.proto.Type.UUID.newBuilder((io.substrait.proto.Type.UUID) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 32) { uuidBuilder_.mergeFrom(value); } else { uuidBuilder_.setMessage(value); } } kindCase_ = 32; return this; } /** * .substrait.Type.UUID uuid = 32; */ public Builder clearUuid() { if (uuidBuilder_ == null) { if (kindCase_ == 32) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 32) { kindCase_ = 0; kind_ = null; } uuidBuilder_.clear(); } return this; } /** * .substrait.Type.UUID uuid = 32; */ public io.substrait.proto.Type.UUID.Builder getUuidBuilder() { return getUuidFieldBuilder().getBuilder(); } /** * .substrait.Type.UUID uuid = 32; */ @java.lang.Override public io.substrait.proto.Type.UUIDOrBuilder getUuidOrBuilder() { if ((kindCase_ == 32) && (uuidBuilder_ != null)) { return uuidBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 32) { return (io.substrait.proto.Type.UUID) kind_; } return io.substrait.proto.Type.UUID.getDefaultInstance(); } } /** * .substrait.Type.UUID uuid = 32; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.UUID, io.substrait.proto.Type.UUID.Builder, io.substrait.proto.Type.UUIDOrBuilder> getUuidFieldBuilder() { if (uuidBuilder_ == null) { if (!(kindCase_ == 32)) { kind_ = io.substrait.proto.Type.UUID.getDefaultInstance(); } uuidBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.Type.UUID, io.substrait.proto.Type.UUID.Builder, io.substrait.proto.Type.UUIDOrBuilder>( (io.substrait.proto.Type.UUID) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 32; onChanged(); return uuidBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalDay, io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder> intervalDayBuilder_; /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; * @return Whether the intervalDay field is set. */ @java.lang.Override public boolean hasIntervalDay() { return kindCase_ == 20; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; * @return The intervalDay. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalDay getIntervalDay() { if (intervalDayBuilder_ == null) { if (kindCase_ == 20) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } else { if (kindCase_ == 20) { return intervalDayBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ public Builder setIntervalDay(io.substrait.proto.DerivationExpression.ExpressionIntervalDay value) { if (intervalDayBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { intervalDayBuilder_.setMessage(value); } kindCase_ = 20; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ public Builder setIntervalDay( io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder builderForValue) { if (intervalDayBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { intervalDayBuilder_.setMessage(builderForValue.build()); } kindCase_ = 20; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ public Builder mergeIntervalDay(io.substrait.proto.DerivationExpression.ExpressionIntervalDay value) { if (intervalDayBuilder_ == null) { if (kindCase_ == 20 && kind_ != io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionIntervalDay.newBuilder((io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 20) { intervalDayBuilder_.mergeFrom(value); } else { intervalDayBuilder_.setMessage(value); } } kindCase_ = 20; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ public Builder clearIntervalDay() { if (intervalDayBuilder_ == null) { if (kindCase_ == 20) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 20) { kindCase_ = 0; kind_ = null; } intervalDayBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ public io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder getIntervalDayBuilder() { return getIntervalDayFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder getIntervalDayOrBuilder() { if ((kindCase_ == 20) && (intervalDayBuilder_ != null)) { return intervalDayBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 20) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionIntervalDay interval_day = 20; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalDay, io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder> getIntervalDayFieldBuilder() { if (intervalDayBuilder_ == null) { if (!(kindCase_ == 20)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionIntervalDay.getDefaultInstance(); } intervalDayBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalDay, io.substrait.proto.DerivationExpression.ExpressionIntervalDay.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalDayOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionIntervalDay) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 20; onChanged(); return intervalDayBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalCompound, io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder> intervalCompoundBuilder_; /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; * @return Whether the intervalCompound field is set. */ @java.lang.Override public boolean hasIntervalCompound() { return kindCase_ == 42; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; * @return The intervalCompound. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound getIntervalCompound() { if (intervalCompoundBuilder_ == null) { if (kindCase_ == 42) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } else { if (kindCase_ == 42) { return intervalCompoundBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ public Builder setIntervalCompound(io.substrait.proto.DerivationExpression.ExpressionIntervalCompound value) { if (intervalCompoundBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { intervalCompoundBuilder_.setMessage(value); } kindCase_ = 42; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ public Builder setIntervalCompound( io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder builderForValue) { if (intervalCompoundBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { intervalCompoundBuilder_.setMessage(builderForValue.build()); } kindCase_ = 42; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ public Builder mergeIntervalCompound(io.substrait.proto.DerivationExpression.ExpressionIntervalCompound value) { if (intervalCompoundBuilder_ == null) { if (kindCase_ == 42 && kind_ != io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.newBuilder((io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 42) { intervalCompoundBuilder_.mergeFrom(value); } else { intervalCompoundBuilder_.setMessage(value); } } kindCase_ = 42; return this; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ public Builder clearIntervalCompound() { if (intervalCompoundBuilder_ == null) { if (kindCase_ == 42) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 42) { kindCase_ = 0; kind_ = null; } intervalCompoundBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ public io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder getIntervalCompoundBuilder() { return getIntervalCompoundFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder getIntervalCompoundOrBuilder() { if ((kindCase_ == 42) && (intervalCompoundBuilder_ != null)) { return intervalCompoundBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 42) { return (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_; } return io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionIntervalCompound interval_compound = 42; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalCompound, io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder> getIntervalCompoundFieldBuilder() { if (intervalCompoundBuilder_ == null) { if (!(kindCase_ == 42)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.getDefaultInstance(); } intervalCompoundBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionIntervalCompound, io.substrait.proto.DerivationExpression.ExpressionIntervalCompound.Builder, io.substrait.proto.DerivationExpression.ExpressionIntervalCompoundOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionIntervalCompound) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 42; onChanged(); return intervalCompoundBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedChar, io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder> fixedCharBuilder_; /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; * @return Whether the fixedChar field is set. */ @java.lang.Override public boolean hasFixedChar() { return kindCase_ == 21; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; * @return The fixedChar. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedChar getFixedChar() { if (fixedCharBuilder_ == null) { if (kindCase_ == 21) { return (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } else { if (kindCase_ == 21) { return fixedCharBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ public Builder setFixedChar(io.substrait.proto.DerivationExpression.ExpressionFixedChar value) { if (fixedCharBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { fixedCharBuilder_.setMessage(value); } kindCase_ = 21; return this; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ public Builder setFixedChar( io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder builderForValue) { if (fixedCharBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { fixedCharBuilder_.setMessage(builderForValue.build()); } kindCase_ = 21; return this; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ public Builder mergeFixedChar(io.substrait.proto.DerivationExpression.ExpressionFixedChar value) { if (fixedCharBuilder_ == null) { if (kindCase_ == 21 && kind_ != io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionFixedChar.newBuilder((io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 21) { fixedCharBuilder_.mergeFrom(value); } else { fixedCharBuilder_.setMessage(value); } } kindCase_ = 21; return this; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ public Builder clearFixedChar() { if (fixedCharBuilder_ == null) { if (kindCase_ == 21) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 21) { kindCase_ = 0; kind_ = null; } fixedCharBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ public io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder getFixedCharBuilder() { return getFixedCharFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder getFixedCharOrBuilder() { if ((kindCase_ == 21) && (fixedCharBuilder_ != null)) { return fixedCharBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 21) { return (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionFixedChar fixed_char = 21; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedChar, io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder> getFixedCharFieldBuilder() { if (fixedCharBuilder_ == null) { if (!(kindCase_ == 21)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionFixedChar.getDefaultInstance(); } fixedCharBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedChar, io.substrait.proto.DerivationExpression.ExpressionFixedChar.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedCharOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionFixedChar) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 21; onChanged(); return fixedCharBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionVarChar, io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder, io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder> varcharBuilder_; /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; * @return Whether the varchar field is set. */ @java.lang.Override public boolean hasVarchar() { return kindCase_ == 22; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; * @return The varchar. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionVarChar getVarchar() { if (varcharBuilder_ == null) { if (kindCase_ == 22) { return (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } else { if (kindCase_ == 22) { return varcharBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ public Builder setVarchar(io.substrait.proto.DerivationExpression.ExpressionVarChar value) { if (varcharBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { varcharBuilder_.setMessage(value); } kindCase_ = 22; return this; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ public Builder setVarchar( io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder builderForValue) { if (varcharBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { varcharBuilder_.setMessage(builderForValue.build()); } kindCase_ = 22; return this; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ public Builder mergeVarchar(io.substrait.proto.DerivationExpression.ExpressionVarChar value) { if (varcharBuilder_ == null) { if (kindCase_ == 22 && kind_ != io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionVarChar.newBuilder((io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 22) { varcharBuilder_.mergeFrom(value); } else { varcharBuilder_.setMessage(value); } } kindCase_ = 22; return this; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ public Builder clearVarchar() { if (varcharBuilder_ == null) { if (kindCase_ == 22) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 22) { kindCase_ = 0; kind_ = null; } varcharBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ public io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder getVarcharBuilder() { return getVarcharFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder getVarcharOrBuilder() { if ((kindCase_ == 22) && (varcharBuilder_ != null)) { return varcharBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 22) { return (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_; } return io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionVarChar varchar = 22; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionVarChar, io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder, io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder> getVarcharFieldBuilder() { if (varcharBuilder_ == null) { if (!(kindCase_ == 22)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionVarChar.getDefaultInstance(); } varcharBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionVarChar, io.substrait.proto.DerivationExpression.ExpressionVarChar.Builder, io.substrait.proto.DerivationExpression.ExpressionVarCharOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionVarChar) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 22; onChanged(); return varcharBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedBinary, io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder> fixedBinaryBuilder_; /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; * @return Whether the fixedBinary field is set. */ @java.lang.Override public boolean hasFixedBinary() { return kindCase_ == 23; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; * @return The fixedBinary. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedBinary getFixedBinary() { if (fixedBinaryBuilder_ == null) { if (kindCase_ == 23) { return (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } else { if (kindCase_ == 23) { return fixedBinaryBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ public Builder setFixedBinary(io.substrait.proto.DerivationExpression.ExpressionFixedBinary value) { if (fixedBinaryBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { fixedBinaryBuilder_.setMessage(value); } kindCase_ = 23; return this; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ public Builder setFixedBinary( io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder builderForValue) { if (fixedBinaryBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { fixedBinaryBuilder_.setMessage(builderForValue.build()); } kindCase_ = 23; return this; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ public Builder mergeFixedBinary(io.substrait.proto.DerivationExpression.ExpressionFixedBinary value) { if (fixedBinaryBuilder_ == null) { if (kindCase_ == 23 && kind_ != io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionFixedBinary.newBuilder((io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 23) { fixedBinaryBuilder_.mergeFrom(value); } else { fixedBinaryBuilder_.setMessage(value); } } kindCase_ = 23; return this; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ public Builder clearFixedBinary() { if (fixedBinaryBuilder_ == null) { if (kindCase_ == 23) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 23) { kindCase_ = 0; kind_ = null; } fixedBinaryBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ public io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder getFixedBinaryBuilder() { return getFixedBinaryFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder getFixedBinaryOrBuilder() { if ((kindCase_ == 23) && (fixedBinaryBuilder_ != null)) { return fixedBinaryBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 23) { return (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_; } return io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionFixedBinary fixed_binary = 23; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedBinary, io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder> getFixedBinaryFieldBuilder() { if (fixedBinaryBuilder_ == null) { if (!(kindCase_ == 23)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionFixedBinary.getDefaultInstance(); } fixedBinaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionFixedBinary, io.substrait.proto.DerivationExpression.ExpressionFixedBinary.Builder, io.substrait.proto.DerivationExpression.ExpressionFixedBinaryOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionFixedBinary) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 23; onChanged(); return fixedBinaryBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionDecimal, io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder, io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder> decimalBuilder_; /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; * @return Whether the decimal field is set. */ @java.lang.Override public boolean hasDecimal() { return kindCase_ == 24; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; * @return The decimal. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionDecimal getDecimal() { if (decimalBuilder_ == null) { if (kindCase_ == 24) { return (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_; } return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } else { if (kindCase_ == 24) { return decimalBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ public Builder setDecimal(io.substrait.proto.DerivationExpression.ExpressionDecimal value) { if (decimalBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { decimalBuilder_.setMessage(value); } kindCase_ = 24; return this; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ public Builder setDecimal( io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder builderForValue) { if (decimalBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { decimalBuilder_.setMessage(builderForValue.build()); } kindCase_ = 24; return this; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ public Builder mergeDecimal(io.substrait.proto.DerivationExpression.ExpressionDecimal value) { if (decimalBuilder_ == null) { if (kindCase_ == 24 && kind_ != io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionDecimal.newBuilder((io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 24) { decimalBuilder_.mergeFrom(value); } else { decimalBuilder_.setMessage(value); } } kindCase_ = 24; return this; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ public Builder clearDecimal() { if (decimalBuilder_ == null) { if (kindCase_ == 24) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 24) { kindCase_ = 0; kind_ = null; } decimalBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ public io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder getDecimalBuilder() { return getDecimalFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder getDecimalOrBuilder() { if ((kindCase_ == 24) && (decimalBuilder_ != null)) { return decimalBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 24) { return (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_; } return io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionDecimal decimal = 24; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionDecimal, io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder, io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder> getDecimalFieldBuilder() { if (decimalBuilder_ == null) { if (!(kindCase_ == 24)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionDecimal.getDefaultInstance(); } decimalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionDecimal, io.substrait.proto.DerivationExpression.ExpressionDecimal.Builder, io.substrait.proto.DerivationExpression.ExpressionDecimalOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionDecimal) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 24; onChanged(); return decimalBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder> precisionTimestampBuilder_; /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; * @return Whether the precisionTimestamp field is set. */ @java.lang.Override public boolean hasPrecisionTimestamp() { return kindCase_ == 40; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; * @return The precisionTimestamp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp getPrecisionTimestamp() { if (precisionTimestampBuilder_ == null) { if (kindCase_ == 40) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } else { if (kindCase_ == 40) { return precisionTimestampBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ public Builder setPrecisionTimestamp(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp value) { if (precisionTimestampBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { precisionTimestampBuilder_.setMessage(value); } kindCase_ = 40; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ public Builder setPrecisionTimestamp( io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder builderForValue) { if (precisionTimestampBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { precisionTimestampBuilder_.setMessage(builderForValue.build()); } kindCase_ = 40; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ public Builder mergePrecisionTimestamp(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp value) { if (precisionTimestampBuilder_ == null) { if (kindCase_ == 40 && kind_ != io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.newBuilder((io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 40) { precisionTimestampBuilder_.mergeFrom(value); } else { precisionTimestampBuilder_.setMessage(value); } } kindCase_ = 40; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ public Builder clearPrecisionTimestamp() { if (precisionTimestampBuilder_ == null) { if (kindCase_ == 40) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 40) { kindCase_ = 0; kind_ = null; } precisionTimestampBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder getPrecisionTimestampBuilder() { return getPrecisionTimestampFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder getPrecisionTimestampOrBuilder() { if ((kindCase_ == 40) && (precisionTimestampBuilder_ != null)) { return precisionTimestampBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 40) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestamp precision_timestamp = 40; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder> getPrecisionTimestampFieldBuilder() { if (precisionTimestampBuilder_ == null) { if (!(kindCase_ == 40)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.getDefaultInstance(); } precisionTimestampBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestamp) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 40; onChanged(); return precisionTimestampBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder> precisionTimestampTzBuilder_; /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; * @return Whether the precisionTimestampTz field is set. */ @java.lang.Override public boolean hasPrecisionTimestampTz() { return kindCase_ == 41; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; * @return The precisionTimestampTz. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ getPrecisionTimestampTz() { if (precisionTimestampTzBuilder_ == null) { if (kindCase_ == 41) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } else { if (kindCase_ == 41) { return precisionTimestampTzBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ public Builder setPrecisionTimestampTz(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ value) { if (precisionTimestampTzBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { precisionTimestampTzBuilder_.setMessage(value); } kindCase_ = 41; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ public Builder setPrecisionTimestampTz( io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder builderForValue) { if (precisionTimestampTzBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { precisionTimestampTzBuilder_.setMessage(builderForValue.build()); } kindCase_ = 41; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ public Builder mergePrecisionTimestampTz(io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ value) { if (precisionTimestampTzBuilder_ == null) { if (kindCase_ == 41 && kind_ != io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.newBuilder((io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 41) { precisionTimestampTzBuilder_.mergeFrom(value); } else { precisionTimestampTzBuilder_.setMessage(value); } } kindCase_ = 41; return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ public Builder clearPrecisionTimestampTz() { if (precisionTimestampTzBuilder_ == null) { if (kindCase_ == 41) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 41) { kindCase_ = 0; kind_ = null; } precisionTimestampTzBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder getPrecisionTimestampTzBuilder() { return getPrecisionTimestampTzFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder getPrecisionTimestampTzOrBuilder() { if ((kindCase_ == 41) && (precisionTimestampTzBuilder_ != null)) { return precisionTimestampTzBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 41) { return (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_; } return io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionPrecisionTimestampTZ precision_timestamp_tz = 41; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder> getPrecisionTimestampTzFieldBuilder() { if (precisionTimestampTzBuilder_ == null) { if (!(kindCase_ == 41)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.getDefaultInstance(); } precisionTimestampTzBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ.Builder, io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionPrecisionTimestampTZ) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 41; onChanged(); return precisionTimestampTzBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder> structBuilder_; /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; * @return Whether the struct field is set. */ @java.lang.Override public boolean hasStruct() { return kindCase_ == 25; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; * @return The struct. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionStruct getStruct() { if (structBuilder_ == null) { if (kindCase_ == 25) { return (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_; } return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } else { if (kindCase_ == 25) { return structBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ public Builder setStruct(io.substrait.proto.DerivationExpression.ExpressionStruct value) { if (structBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { structBuilder_.setMessage(value); } kindCase_ = 25; return this; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ public Builder setStruct( io.substrait.proto.DerivationExpression.ExpressionStruct.Builder builderForValue) { if (structBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { structBuilder_.setMessage(builderForValue.build()); } kindCase_ = 25; return this; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ public Builder mergeStruct(io.substrait.proto.DerivationExpression.ExpressionStruct value) { if (structBuilder_ == null) { if (kindCase_ == 25 && kind_ != io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionStruct.newBuilder((io.substrait.proto.DerivationExpression.ExpressionStruct) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 25) { structBuilder_.mergeFrom(value); } else { structBuilder_.setMessage(value); } } kindCase_ = 25; return this; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ public Builder clearStruct() { if (structBuilder_ == null) { if (kindCase_ == 25) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 25) { kindCase_ = 0; kind_ = null; } structBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ public io.substrait.proto.DerivationExpression.ExpressionStruct.Builder getStructBuilder() { return getStructFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder getStructOrBuilder() { if ((kindCase_ == 25) && (structBuilder_ != null)) { return structBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 25) { return (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_; } return io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionStruct struct = 25; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder> getStructFieldBuilder() { if (structBuilder_ == null) { if (!(kindCase_ == 25)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionStruct.getDefaultInstance(); } structBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionStruct, io.substrait.proto.DerivationExpression.ExpressionStruct.Builder, io.substrait.proto.DerivationExpression.ExpressionStructOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionStruct) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 25; onChanged(); return structBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionList, io.substrait.proto.DerivationExpression.ExpressionList.Builder, io.substrait.proto.DerivationExpression.ExpressionListOrBuilder> listBuilder_; /** * .substrait.DerivationExpression.ExpressionList list = 27; * @return Whether the list field is set. */ @java.lang.Override public boolean hasList() { return kindCase_ == 27; } /** * .substrait.DerivationExpression.ExpressionList list = 27; * @return The list. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionList getList() { if (listBuilder_ == null) { if (kindCase_ == 27) { return (io.substrait.proto.DerivationExpression.ExpressionList) kind_; } return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } else { if (kindCase_ == 27) { return listBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ public Builder setList(io.substrait.proto.DerivationExpression.ExpressionList value) { if (listBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { listBuilder_.setMessage(value); } kindCase_ = 27; return this; } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ public Builder setList( io.substrait.proto.DerivationExpression.ExpressionList.Builder builderForValue) { if (listBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { listBuilder_.setMessage(builderForValue.build()); } kindCase_ = 27; return this; } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ public Builder mergeList(io.substrait.proto.DerivationExpression.ExpressionList value) { if (listBuilder_ == null) { if (kindCase_ == 27 && kind_ != io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionList.newBuilder((io.substrait.proto.DerivationExpression.ExpressionList) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 27) { listBuilder_.mergeFrom(value); } else { listBuilder_.setMessage(value); } } kindCase_ = 27; return this; } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ public Builder clearList() { if (listBuilder_ == null) { if (kindCase_ == 27) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 27) { kindCase_ = 0; kind_ = null; } listBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ public io.substrait.proto.DerivationExpression.ExpressionList.Builder getListBuilder() { return getListFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionListOrBuilder getListOrBuilder() { if ((kindCase_ == 27) && (listBuilder_ != null)) { return listBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 27) { return (io.substrait.proto.DerivationExpression.ExpressionList) kind_; } return io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionList list = 27; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionList, io.substrait.proto.DerivationExpression.ExpressionList.Builder, io.substrait.proto.DerivationExpression.ExpressionListOrBuilder> getListFieldBuilder() { if (listBuilder_ == null) { if (!(kindCase_ == 27)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionList.getDefaultInstance(); } listBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionList, io.substrait.proto.DerivationExpression.ExpressionList.Builder, io.substrait.proto.DerivationExpression.ExpressionListOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionList) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 27; onChanged(); return listBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionMap, io.substrait.proto.DerivationExpression.ExpressionMap.Builder, io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder> mapBuilder_; /** * .substrait.DerivationExpression.ExpressionMap map = 28; * @return Whether the map field is set. */ @java.lang.Override public boolean hasMap() { return kindCase_ == 28; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; * @return The map. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionMap getMap() { if (mapBuilder_ == null) { if (kindCase_ == 28) { return (io.substrait.proto.DerivationExpression.ExpressionMap) kind_; } return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } else { if (kindCase_ == 28) { return mapBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ public Builder setMap(io.substrait.proto.DerivationExpression.ExpressionMap value) { if (mapBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { mapBuilder_.setMessage(value); } kindCase_ = 28; return this; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ public Builder setMap( io.substrait.proto.DerivationExpression.ExpressionMap.Builder builderForValue) { if (mapBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { mapBuilder_.setMessage(builderForValue.build()); } kindCase_ = 28; return this; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ public Builder mergeMap(io.substrait.proto.DerivationExpression.ExpressionMap value) { if (mapBuilder_ == null) { if (kindCase_ == 28 && kind_ != io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionMap.newBuilder((io.substrait.proto.DerivationExpression.ExpressionMap) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 28) { mapBuilder_.mergeFrom(value); } else { mapBuilder_.setMessage(value); } } kindCase_ = 28; return this; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ public Builder clearMap() { if (mapBuilder_ == null) { if (kindCase_ == 28) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 28) { kindCase_ = 0; kind_ = null; } mapBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ public io.substrait.proto.DerivationExpression.ExpressionMap.Builder getMapBuilder() { return getMapFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder getMapOrBuilder() { if ((kindCase_ == 28) && (mapBuilder_ != null)) { return mapBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 28) { return (io.substrait.proto.DerivationExpression.ExpressionMap) kind_; } return io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionMap map = 28; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionMap, io.substrait.proto.DerivationExpression.ExpressionMap.Builder, io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder> getMapFieldBuilder() { if (mapBuilder_ == null) { if (!(kindCase_ == 28)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionMap.getDefaultInstance(); } mapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionMap, io.substrait.proto.DerivationExpression.ExpressionMap.Builder, io.substrait.proto.DerivationExpression.ExpressionMapOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionMap) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 28; onChanged(); return mapBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionUserDefined, io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder, io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder> userDefinedBuilder_; /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; * @return Whether the userDefined field is set. */ @java.lang.Override public boolean hasUserDefined() { return kindCase_ == 30; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; * @return The userDefined. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionUserDefined getUserDefined() { if (userDefinedBuilder_ == null) { if (kindCase_ == 30) { return (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_; } return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } else { if (kindCase_ == 30) { return userDefinedBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ public Builder setUserDefined(io.substrait.proto.DerivationExpression.ExpressionUserDefined value) { if (userDefinedBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { userDefinedBuilder_.setMessage(value); } kindCase_ = 30; return this; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ public Builder setUserDefined( io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder builderForValue) { if (userDefinedBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { userDefinedBuilder_.setMessage(builderForValue.build()); } kindCase_ = 30; return this; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ public Builder mergeUserDefined(io.substrait.proto.DerivationExpression.ExpressionUserDefined value) { if (userDefinedBuilder_ == null) { if (kindCase_ == 30 && kind_ != io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ExpressionUserDefined.newBuilder((io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 30) { userDefinedBuilder_.mergeFrom(value); } else { userDefinedBuilder_.setMessage(value); } } kindCase_ = 30; return this; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ public Builder clearUserDefined() { if (userDefinedBuilder_ == null) { if (kindCase_ == 30) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 30) { kindCase_ = 0; kind_ = null; } userDefinedBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ public io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder getUserDefinedBuilder() { return getUserDefinedFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder getUserDefinedOrBuilder() { if ((kindCase_ == 30) && (userDefinedBuilder_ != null)) { return userDefinedBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 30) { return (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_; } return io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ExpressionUserDefined user_defined = 30; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionUserDefined, io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder, io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder> getUserDefinedFieldBuilder() { if (userDefinedBuilder_ == null) { if (!(kindCase_ == 30)) { kind_ = io.substrait.proto.DerivationExpression.ExpressionUserDefined.getDefaultInstance(); } userDefinedBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ExpressionUserDefined, io.substrait.proto.DerivationExpression.ExpressionUserDefined.Builder, io.substrait.proto.DerivationExpression.ExpressionUserDefinedOrBuilder>( (io.substrait.proto.DerivationExpression.ExpressionUserDefined) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 30; onChanged(); return userDefinedBuilder_; } /** *
     * Deprecated in favor of user_defined, which allows nullability and
     * variations to be specified. If user_defined_pointer is encountered,
     * treat it as being non-nullable and having the default variation.
     * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @return Whether the userDefinedPointer field is set. */ @java.lang.Deprecated public boolean hasUserDefinedPointer() { return kindCase_ == 31; } /** *
     * Deprecated in favor of user_defined, which allows nullability and
     * variations to be specified. If user_defined_pointer is encountered,
     * treat it as being non-nullable and having the default variation.
     * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @return The userDefinedPointer. */ @java.lang.Deprecated public int getUserDefinedPointer() { if (kindCase_ == 31) { return (java.lang.Integer) kind_; } return 0; } /** *
     * Deprecated in favor of user_defined, which allows nullability and
     * variations to be specified. If user_defined_pointer is encountered,
     * treat it as being non-nullable and having the default variation.
     * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @param value The userDefinedPointer to set. * @return This builder for chaining. */ @java.lang.Deprecated public Builder setUserDefinedPointer(int value) { kindCase_ = 31; kind_ = value; onChanged(); return this; } /** *
     * Deprecated in favor of user_defined, which allows nullability and
     * variations to be specified. If user_defined_pointer is encountered,
     * treat it as being non-nullable and having the default variation.
     * 
* * uint32 user_defined_pointer = 31 [deprecated = true]; * @deprecated substrait.DerivationExpression.user_defined_pointer is deprecated. * See substrait/type_expressions.proto;l=50 * @return This builder for chaining. */ @java.lang.Deprecated public Builder clearUserDefinedPointer() { if (kindCase_ == 31) { kindCase_ = 0; kind_ = null; onChanged(); } return this; } /** * string type_parameter_name = 33; * @return Whether the typeParameterName field is set. */ @java.lang.Override public boolean hasTypeParameterName() { return kindCase_ == 33; } /** * string type_parameter_name = 33; * @return The typeParameterName. */ @java.lang.Override public java.lang.String getTypeParameterName() { java.lang.Object ref = ""; if (kindCase_ == 33) { ref = kind_; } if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (kindCase_ == 33) { kind_ = s; } return s; } else { return (java.lang.String) ref; } } /** * string type_parameter_name = 33; * @return The bytes for typeParameterName. */ @java.lang.Override public com.google.protobuf.ByteString getTypeParameterNameBytes() { java.lang.Object ref = ""; if (kindCase_ == 33) { ref = kind_; } if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); if (kindCase_ == 33) { kind_ = b; } return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * string type_parameter_name = 33; * @param value The typeParameterName to set. * @return This builder for chaining. */ public Builder setTypeParameterName( java.lang.String value) { if (value == null) { throw new NullPointerException(); } kindCase_ = 33; kind_ = value; onChanged(); return this; } /** * string type_parameter_name = 33; * @return This builder for chaining. */ public Builder clearTypeParameterName() { if (kindCase_ == 33) { kindCase_ = 0; kind_ = null; onChanged(); } return this; } /** * string type_parameter_name = 33; * @param value The bytes for typeParameterName to set. * @return This builder for chaining. */ public Builder setTypeParameterNameBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); kindCase_ = 33; kind_ = value; onChanged(); return this; } /** * string integer_parameter_name = 34; * @return Whether the integerParameterName field is set. */ @java.lang.Override public boolean hasIntegerParameterName() { return kindCase_ == 34; } /** * string integer_parameter_name = 34; * @return The integerParameterName. */ @java.lang.Override public java.lang.String getIntegerParameterName() { java.lang.Object ref = ""; if (kindCase_ == 34) { ref = kind_; } if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); if (kindCase_ == 34) { kind_ = s; } return s; } else { return (java.lang.String) ref; } } /** * string integer_parameter_name = 34; * @return The bytes for integerParameterName. */ @java.lang.Override public com.google.protobuf.ByteString getIntegerParameterNameBytes() { java.lang.Object ref = ""; if (kindCase_ == 34) { ref = kind_; } if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); if (kindCase_ == 34) { kind_ = b; } return b; } else { return (com.google.protobuf.ByteString) ref; } } /** * string integer_parameter_name = 34; * @param value The integerParameterName to set. * @return This builder for chaining. */ public Builder setIntegerParameterName( java.lang.String value) { if (value == null) { throw new NullPointerException(); } kindCase_ = 34; kind_ = value; onChanged(); return this; } /** * string integer_parameter_name = 34; * @return This builder for chaining. */ public Builder clearIntegerParameterName() { if (kindCase_ == 34) { kindCase_ = 0; kind_ = null; onChanged(); } return this; } /** * string integer_parameter_name = 34; * @param value The bytes for integerParameterName to set. * @return This builder for chaining. */ public Builder setIntegerParameterNameBytes( com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); } checkByteStringIsUtf8(value); kindCase_ = 34; kind_ = value; onChanged(); return this; } /** * int32 integer_literal = 35; * @return Whether the integerLiteral field is set. */ public boolean hasIntegerLiteral() { return kindCase_ == 35; } /** * int32 integer_literal = 35; * @return The integerLiteral. */ public int getIntegerLiteral() { if (kindCase_ == 35) { return (java.lang.Integer) kind_; } return 0; } /** * int32 integer_literal = 35; * @param value The integerLiteral to set. * @return This builder for chaining. */ public Builder setIntegerLiteral(int value) { kindCase_ = 35; kind_ = value; onChanged(); return this; } /** * int32 integer_literal = 35; * @return This builder for chaining. */ public Builder clearIntegerLiteral() { if (kindCase_ == 35) { kindCase_ = 0; kind_ = null; onChanged(); } return this; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.UnaryOp, io.substrait.proto.DerivationExpression.UnaryOp.Builder, io.substrait.proto.DerivationExpression.UnaryOpOrBuilder> unaryOpBuilder_; /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; * @return Whether the unaryOp field is set. */ @java.lang.Override public boolean hasUnaryOp() { return kindCase_ == 36; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; * @return The unaryOp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.UnaryOp getUnaryOp() { if (unaryOpBuilder_ == null) { if (kindCase_ == 36) { return (io.substrait.proto.DerivationExpression.UnaryOp) kind_; } return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } else { if (kindCase_ == 36) { return unaryOpBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ public Builder setUnaryOp(io.substrait.proto.DerivationExpression.UnaryOp value) { if (unaryOpBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { unaryOpBuilder_.setMessage(value); } kindCase_ = 36; return this; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ public Builder setUnaryOp( io.substrait.proto.DerivationExpression.UnaryOp.Builder builderForValue) { if (unaryOpBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { unaryOpBuilder_.setMessage(builderForValue.build()); } kindCase_ = 36; return this; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ public Builder mergeUnaryOp(io.substrait.proto.DerivationExpression.UnaryOp value) { if (unaryOpBuilder_ == null) { if (kindCase_ == 36 && kind_ != io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.UnaryOp.newBuilder((io.substrait.proto.DerivationExpression.UnaryOp) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 36) { unaryOpBuilder_.mergeFrom(value); } else { unaryOpBuilder_.setMessage(value); } } kindCase_ = 36; return this; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ public Builder clearUnaryOp() { if (unaryOpBuilder_ == null) { if (kindCase_ == 36) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 36) { kindCase_ = 0; kind_ = null; } unaryOpBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ public io.substrait.proto.DerivationExpression.UnaryOp.Builder getUnaryOpBuilder() { return getUnaryOpFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ @java.lang.Override public io.substrait.proto.DerivationExpression.UnaryOpOrBuilder getUnaryOpOrBuilder() { if ((kindCase_ == 36) && (unaryOpBuilder_ != null)) { return unaryOpBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 36) { return (io.substrait.proto.DerivationExpression.UnaryOp) kind_; } return io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.UnaryOp unary_op = 36; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.UnaryOp, io.substrait.proto.DerivationExpression.UnaryOp.Builder, io.substrait.proto.DerivationExpression.UnaryOpOrBuilder> getUnaryOpFieldBuilder() { if (unaryOpBuilder_ == null) { if (!(kindCase_ == 36)) { kind_ = io.substrait.proto.DerivationExpression.UnaryOp.getDefaultInstance(); } unaryOpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.UnaryOp, io.substrait.proto.DerivationExpression.UnaryOp.Builder, io.substrait.proto.DerivationExpression.UnaryOpOrBuilder>( (io.substrait.proto.DerivationExpression.UnaryOp) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 36; onChanged(); return unaryOpBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.BinaryOp, io.substrait.proto.DerivationExpression.BinaryOp.Builder, io.substrait.proto.DerivationExpression.BinaryOpOrBuilder> binaryOpBuilder_; /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; * @return Whether the binaryOp field is set. */ @java.lang.Override public boolean hasBinaryOp() { return kindCase_ == 37; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; * @return The binaryOp. */ @java.lang.Override public io.substrait.proto.DerivationExpression.BinaryOp getBinaryOp() { if (binaryOpBuilder_ == null) { if (kindCase_ == 37) { return (io.substrait.proto.DerivationExpression.BinaryOp) kind_; } return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } else { if (kindCase_ == 37) { return binaryOpBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ public Builder setBinaryOp(io.substrait.proto.DerivationExpression.BinaryOp value) { if (binaryOpBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { binaryOpBuilder_.setMessage(value); } kindCase_ = 37; return this; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ public Builder setBinaryOp( io.substrait.proto.DerivationExpression.BinaryOp.Builder builderForValue) { if (binaryOpBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { binaryOpBuilder_.setMessage(builderForValue.build()); } kindCase_ = 37; return this; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ public Builder mergeBinaryOp(io.substrait.proto.DerivationExpression.BinaryOp value) { if (binaryOpBuilder_ == null) { if (kindCase_ == 37 && kind_ != io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.BinaryOp.newBuilder((io.substrait.proto.DerivationExpression.BinaryOp) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 37) { binaryOpBuilder_.mergeFrom(value); } else { binaryOpBuilder_.setMessage(value); } } kindCase_ = 37; return this; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ public Builder clearBinaryOp() { if (binaryOpBuilder_ == null) { if (kindCase_ == 37) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 37) { kindCase_ = 0; kind_ = null; } binaryOpBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ public io.substrait.proto.DerivationExpression.BinaryOp.Builder getBinaryOpBuilder() { return getBinaryOpFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ @java.lang.Override public io.substrait.proto.DerivationExpression.BinaryOpOrBuilder getBinaryOpOrBuilder() { if ((kindCase_ == 37) && (binaryOpBuilder_ != null)) { return binaryOpBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 37) { return (io.substrait.proto.DerivationExpression.BinaryOp) kind_; } return io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } } /** * .substrait.DerivationExpression.BinaryOp binary_op = 37; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.BinaryOp, io.substrait.proto.DerivationExpression.BinaryOp.Builder, io.substrait.proto.DerivationExpression.BinaryOpOrBuilder> getBinaryOpFieldBuilder() { if (binaryOpBuilder_ == null) { if (!(kindCase_ == 37)) { kind_ = io.substrait.proto.DerivationExpression.BinaryOp.getDefaultInstance(); } binaryOpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.BinaryOp, io.substrait.proto.DerivationExpression.BinaryOp.Builder, io.substrait.proto.DerivationExpression.BinaryOpOrBuilder>( (io.substrait.proto.DerivationExpression.BinaryOp) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 37; onChanged(); return binaryOpBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.IfElse, io.substrait.proto.DerivationExpression.IfElse.Builder, io.substrait.proto.DerivationExpression.IfElseOrBuilder> ifElseBuilder_; /** * .substrait.DerivationExpression.IfElse if_else = 38; * @return Whether the ifElse field is set. */ @java.lang.Override public boolean hasIfElse() { return kindCase_ == 38; } /** * .substrait.DerivationExpression.IfElse if_else = 38; * @return The ifElse. */ @java.lang.Override public io.substrait.proto.DerivationExpression.IfElse getIfElse() { if (ifElseBuilder_ == null) { if (kindCase_ == 38) { return (io.substrait.proto.DerivationExpression.IfElse) kind_; } return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } else { if (kindCase_ == 38) { return ifElseBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ public Builder setIfElse(io.substrait.proto.DerivationExpression.IfElse value) { if (ifElseBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { ifElseBuilder_.setMessage(value); } kindCase_ = 38; return this; } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ public Builder setIfElse( io.substrait.proto.DerivationExpression.IfElse.Builder builderForValue) { if (ifElseBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { ifElseBuilder_.setMessage(builderForValue.build()); } kindCase_ = 38; return this; } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ public Builder mergeIfElse(io.substrait.proto.DerivationExpression.IfElse value) { if (ifElseBuilder_ == null) { if (kindCase_ == 38 && kind_ != io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.IfElse.newBuilder((io.substrait.proto.DerivationExpression.IfElse) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 38) { ifElseBuilder_.mergeFrom(value); } else { ifElseBuilder_.setMessage(value); } } kindCase_ = 38; return this; } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ public Builder clearIfElse() { if (ifElseBuilder_ == null) { if (kindCase_ == 38) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 38) { kindCase_ = 0; kind_ = null; } ifElseBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ public io.substrait.proto.DerivationExpression.IfElse.Builder getIfElseBuilder() { return getIfElseFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ @java.lang.Override public io.substrait.proto.DerivationExpression.IfElseOrBuilder getIfElseOrBuilder() { if ((kindCase_ == 38) && (ifElseBuilder_ != null)) { return ifElseBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 38) { return (io.substrait.proto.DerivationExpression.IfElse) kind_; } return io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } } /** * .substrait.DerivationExpression.IfElse if_else = 38; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.IfElse, io.substrait.proto.DerivationExpression.IfElse.Builder, io.substrait.proto.DerivationExpression.IfElseOrBuilder> getIfElseFieldBuilder() { if (ifElseBuilder_ == null) { if (!(kindCase_ == 38)) { kind_ = io.substrait.proto.DerivationExpression.IfElse.getDefaultInstance(); } ifElseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.IfElse, io.substrait.proto.DerivationExpression.IfElse.Builder, io.substrait.proto.DerivationExpression.IfElseOrBuilder>( (io.substrait.proto.DerivationExpression.IfElse) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 38; onChanged(); return ifElseBuilder_; } private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ReturnProgram, io.substrait.proto.DerivationExpression.ReturnProgram.Builder, io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder> returnProgramBuilder_; /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; * @return Whether the returnProgram field is set. */ @java.lang.Override public boolean hasReturnProgram() { return kindCase_ == 39; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; * @return The returnProgram. */ @java.lang.Override public io.substrait.proto.DerivationExpression.ReturnProgram getReturnProgram() { if (returnProgramBuilder_ == null) { if (kindCase_ == 39) { return (io.substrait.proto.DerivationExpression.ReturnProgram) kind_; } return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } else { if (kindCase_ == 39) { return returnProgramBuilder_.getMessage(); } return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ public Builder setReturnProgram(io.substrait.proto.DerivationExpression.ReturnProgram value) { if (returnProgramBuilder_ == null) { if (value == null) { throw new NullPointerException(); } kind_ = value; onChanged(); } else { returnProgramBuilder_.setMessage(value); } kindCase_ = 39; return this; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ public Builder setReturnProgram( io.substrait.proto.DerivationExpression.ReturnProgram.Builder builderForValue) { if (returnProgramBuilder_ == null) { kind_ = builderForValue.build(); onChanged(); } else { returnProgramBuilder_.setMessage(builderForValue.build()); } kindCase_ = 39; return this; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ public Builder mergeReturnProgram(io.substrait.proto.DerivationExpression.ReturnProgram value) { if (returnProgramBuilder_ == null) { if (kindCase_ == 39 && kind_ != io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance()) { kind_ = io.substrait.proto.DerivationExpression.ReturnProgram.newBuilder((io.substrait.proto.DerivationExpression.ReturnProgram) kind_) .mergeFrom(value).buildPartial(); } else { kind_ = value; } onChanged(); } else { if (kindCase_ == 39) { returnProgramBuilder_.mergeFrom(value); } else { returnProgramBuilder_.setMessage(value); } } kindCase_ = 39; return this; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ public Builder clearReturnProgram() { if (returnProgramBuilder_ == null) { if (kindCase_ == 39) { kindCase_ = 0; kind_ = null; onChanged(); } } else { if (kindCase_ == 39) { kindCase_ = 0; kind_ = null; } returnProgramBuilder_.clear(); } return this; } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ public io.substrait.proto.DerivationExpression.ReturnProgram.Builder getReturnProgramBuilder() { return getReturnProgramFieldBuilder().getBuilder(); } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ @java.lang.Override public io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder getReturnProgramOrBuilder() { if ((kindCase_ == 39) && (returnProgramBuilder_ != null)) { return returnProgramBuilder_.getMessageOrBuilder(); } else { if (kindCase_ == 39) { return (io.substrait.proto.DerivationExpression.ReturnProgram) kind_; } return io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } } /** * .substrait.DerivationExpression.ReturnProgram return_program = 39; */ private com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ReturnProgram, io.substrait.proto.DerivationExpression.ReturnProgram.Builder, io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder> getReturnProgramFieldBuilder() { if (returnProgramBuilder_ == null) { if (!(kindCase_ == 39)) { kind_ = io.substrait.proto.DerivationExpression.ReturnProgram.getDefaultInstance(); } returnProgramBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< io.substrait.proto.DerivationExpression.ReturnProgram, io.substrait.proto.DerivationExpression.ReturnProgram.Builder, io.substrait.proto.DerivationExpression.ReturnProgramOrBuilder>( (io.substrait.proto.DerivationExpression.ReturnProgram) kind_, getParentForChildren(), isClean()); kind_ = null; } kindCase_ = 39; onChanged(); return returnProgramBuilder_; } @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:substrait.DerivationExpression) } // @@protoc_insertion_point(class_scope:substrait.DerivationExpression) private static final io.substrait.proto.DerivationExpression DEFAULT_INSTANCE; static { DEFAULT_INSTANCE = new io.substrait.proto.DerivationExpression(); } public static io.substrait.proto.DerivationExpression getDefaultInstance() { return DEFAULT_INSTANCE; } private static final com.google.protobuf.Parser PARSER = new com.google.protobuf.AbstractParser() { @java.lang.Override public DerivationExpression parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { Builder builder = newBuilder(); try { builder.mergeFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { throw e.setUnfinishedMessage(builder.buildPartial()); } catch (com.google.protobuf.UninitializedMessageException e) { throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); } catch (java.io.IOException e) { throw new com.google.protobuf.InvalidProtocolBufferException(e) .setUnfinishedMessage(builder.buildPartial()); } return builder.buildPartial(); } }; public static com.google.protobuf.Parser parser() { return PARSER; } @java.lang.Override public com.google.protobuf.Parser getParserForType() { return PARSER; } @java.lang.Override public io.substrait.proto.DerivationExpression getDefaultInstanceForType() { return DEFAULT_INSTANCE; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy