// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: Pipeline.proto
// Protobuf C++ Version: 6.33.5

#ifndef Pipeline_2eproto_2epb_2eh
#define Pipeline_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033005
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_bases.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/protobuf/timestamp.pb.h"
#include "Column.pb.h"
#include "AsType.pb.h"
#include "BinaryOp.pb.h"
#include "Math.pb.h"
#include "Agg.pb.h"
#include "Datepart.pb.h"
#include "NA.pb.h"
#include "Text.pb.h"
#include "Map.pb.h"
#include "Tree.pb.h"
#include "NewColumn.pb.h"
#include "Ftrl.pb.h"
#include "Group.pb.h"
#include "Custom.pb.h"
#include "Problem.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_Pipeline_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_Pipeline_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_Pipeline_2eproto;
}  // extern "C"
namespace mojo {
namespace spec {
enum ImageNetPreprocessingMode : int;
extern const uint32_t ImageNetPreprocessingMode_internal_data_[];
enum TorchTensorType : int;
extern const uint32_t TorchTensorType_internal_data_[];
class CatBoostOp;
struct CatBoostOpDefaultTypeInternal;
extern CatBoostOpDefaultTypeInternal _CatBoostOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull CatBoostOp_class_data_;
class ExecPipeOp;
struct ExecPipeOpDefaultTypeInternal;
extern ExecPipeOpDefaultTypeInternal _ExecPipeOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ExecPipeOp_class_data_;
class Frame;
struct FrameDefaultTypeInternal;
extern FrameDefaultTypeInternal _Frame_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Frame_class_data_;
class IdentityOp;
struct IdentityOpDefaultTypeInternal;
extern IdentityOpDefaultTypeInternal _IdentityOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull IdentityOp_class_data_;
class ImageNetPreprocessingOp;
struct ImageNetPreprocessingOpDefaultTypeInternal;
extern ImageNetPreprocessingOpDefaultTypeInternal _ImageNetPreprocessingOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ImageNetPreprocessingOp_class_data_;
class ImgCenterCropOp;
struct ImgCenterCropOpDefaultTypeInternal;
extern ImgCenterCropOpDefaultTypeInternal _ImgCenterCropOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ImgCenterCropOp_class_data_;
class ImgResizeOp;
struct ImgResizeOpDefaultTypeInternal;
extern ImgResizeOpDefaultTypeInternal _ImgResizeOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ImgResizeOp_class_data_;
class ImgResizeShorterOp;
struct ImgResizeShorterOpDefaultTypeInternal;
extern ImgResizeShorterOpDefaultTypeInternal _ImgResizeShorterOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ImgResizeShorterOp_class_data_;
class License;
struct LicenseDefaultTypeInternal;
extern LicenseDefaultTypeInternal _License_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull License_class_data_;
class LightGBMOp;
struct LightGBMOpDefaultTypeInternal;
extern LightGBMOpDefaultTypeInternal _LightGBMOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull LightGBMOp_class_data_;
class LinearBlenderOp;
struct LinearBlenderOpDefaultTypeInternal;
extern LinearBlenderOpDefaultTypeInternal _LinearBlenderOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull LinearBlenderOp_class_data_;
class OrigMatrixSparseRow;
struct OrigMatrixSparseRowDefaultTypeInternal;
extern OrigMatrixSparseRowDefaultTypeInternal _OrigMatrixSparseRow_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull OrigMatrixSparseRow_class_data_;
class Pipeline;
struct PipelineDefaultTypeInternal;
extern PipelineDefaultTypeInternal _Pipeline_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Pipeline_class_data_;
class Pipeline_FormatStringEntry_DoNotUse;
struct Pipeline_FormatStringEntry_DoNotUseDefaultTypeInternal;
extern Pipeline_FormatStringEntry_DoNotUseDefaultTypeInternal _Pipeline_FormatStringEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Pipeline_FormatStringEntry_DoNotUse_class_data_;
class PytorchOp;
struct PytorchOpDefaultTypeInternal;
extern PytorchOpDefaultTypeInternal _PytorchOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull PytorchOp_class_data_;
class SparseValue;
struct SparseValueDefaultTypeInternal;
extern SparseValueDefaultTypeInternal _SparseValue_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull SparseValue_class_data_;
class TensorFlowOp;
struct TensorFlowOpDefaultTypeInternal;
extern TensorFlowOpDefaultTypeInternal _TensorFlowOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull TensorFlowOp_class_data_;
class Transformation;
struct TransformationDefaultTypeInternal;
extern TransformationDefaultTypeInternal _Transformation_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Transformation_class_data_;
class XGBoostOp;
struct XGBoostOpDefaultTypeInternal;
extern XGBoostOpDefaultTypeInternal _XGBoostOp_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull XGBoostOp_class_data_;
}  // namespace spec
}  // namespace mojo
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::mojo::spec::ImageNetPreprocessingMode_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::ImageNetPreprocessingMode>;
template <>
internal::EnumTraitsT<::mojo::spec::TorchTensorType_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::TorchTensorType>;
}  // namespace protobuf
}  // namespace google

namespace mojo {
namespace spec {
enum TorchTensorType : int {
  UNKNOWN_TENSOR_TYPE = 0,
  PYTORCH_TENSOR_FLOAT32 = 1,
  PYTORCH_TENSOR_FLOAT64 = 2,
  PYTORCH_TENSOR_FLOAT16 = 3,
  PYTORCH_TENSOR_UINT8 = 4,
  PYTORCH_TENSOR_INT8 = 5,
  PYTORCH_TENSOR_INT16 = 6,
  PYTORCH_TENSOR_INT32 = 7,
  PYTORCH_TENSOR_INT64 = 8,
  PYTORCH_TENSOR_BOOL = 9,
  TorchTensorType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  TorchTensorType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t TorchTensorType_internal_data_[];
inline constexpr TorchTensorType TorchTensorType_MIN =
    static_cast<TorchTensorType>(0);
inline constexpr TorchTensorType TorchTensorType_MAX =
    static_cast<TorchTensorType>(9);
inline bool TorchTensorType_IsValid(int value) {
  return 0 <= value && value <= 9;
}
inline constexpr int TorchTensorType_ARRAYSIZE = 9 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL TorchTensorType_descriptor();
template <typename T>
const ::std::string& TorchTensorType_Name(T value) {
  static_assert(::std::is_same<T, TorchTensorType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to TorchTensorType_Name().");
  return TorchTensorType_Name(static_cast<TorchTensorType>(value));
}
template <>
inline const ::std::string& TorchTensorType_Name(TorchTensorType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<TorchTensorType_descriptor, 0, 9>(
      static_cast<int>(value));
}
inline bool TorchTensorType_Parse(
    ::absl::string_view name, TorchTensorType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<TorchTensorType>(TorchTensorType_descriptor(), name,
                                           value);
}
enum ImageNetPreprocessingMode : int {
  UNKNOWN_IMAGENET_PREPROCESSNG_MODE = 0,
  IMAGENET_PREPROCESSNG_TF = 1,
  IMAGENET_PREPROCESSNG_TORCH = 2,
  IMAGENET_PREPROCESSNG_CAFFE = 3,
  IMAGENET_PREPROCESSNG_CUSTOM_TORCH = 4,
  ImageNetPreprocessingMode_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ImageNetPreprocessingMode_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ImageNetPreprocessingMode_internal_data_[];
inline constexpr ImageNetPreprocessingMode ImageNetPreprocessingMode_MIN =
    static_cast<ImageNetPreprocessingMode>(0);
inline constexpr ImageNetPreprocessingMode ImageNetPreprocessingMode_MAX =
    static_cast<ImageNetPreprocessingMode>(4);
inline bool ImageNetPreprocessingMode_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int ImageNetPreprocessingMode_ARRAYSIZE = 4 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL ImageNetPreprocessingMode_descriptor();
template <typename T>
const ::std::string& ImageNetPreprocessingMode_Name(T value) {
  static_assert(::std::is_same<T, ImageNetPreprocessingMode>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ImageNetPreprocessingMode_Name().");
  return ImageNetPreprocessingMode_Name(static_cast<ImageNetPreprocessingMode>(value));
}
template <>
inline const ::std::string& ImageNetPreprocessingMode_Name(ImageNetPreprocessingMode value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ImageNetPreprocessingMode_descriptor, 0, 4>(
      static_cast<int>(value));
}
inline bool ImageNetPreprocessingMode_Parse(
    ::absl::string_view name, ImageNetPreprocessingMode* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ImageNetPreprocessingMode>(ImageNetPreprocessingMode_descriptor(), name,
                                           value);
}

// ===================================================================


// -------------------------------------------------------------------

class XGBoostOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.XGBoostOp) */ {
 public:
  inline XGBoostOp() : XGBoostOp(nullptr) {}
  ~XGBoostOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(XGBoostOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(XGBoostOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR XGBoostOp(::google::protobuf::internal::ConstantInitialized);

  inline XGBoostOp(const XGBoostOp& from) : XGBoostOp(nullptr, from) {}
  inline XGBoostOp(XGBoostOp&& from) noexcept
      : XGBoostOp(nullptr, ::std::move(from)) {}
  inline XGBoostOp& operator=(const XGBoostOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline XGBoostOp& operator=(XGBoostOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const XGBoostOp& default_instance() {
    return *reinterpret_cast<const XGBoostOp*>(
        &_XGBoostOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(XGBoostOp& a, XGBoostOp& b) { a.Swap(&b); }
  inline void Swap(XGBoostOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(XGBoostOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  XGBoostOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<XGBoostOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const XGBoostOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const XGBoostOp& from) { XGBoostOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(XGBoostOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.XGBoostOp"; }

  explicit XGBoostOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  XGBoostOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const XGBoostOp& from);
  XGBoostOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, XGBoostOp&& from) noexcept
      : XGBoostOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFileNameFieldNumber = 2,
    kNumTreeLimitFieldNumber = 1,
  };
  // string file_name = 2;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // int32 num_tree_limit = 1;
  void clear_num_tree_limit() ;
  ::int32_t num_tree_limit() const;
  void set_num_tree_limit(::int32_t value);

  private:
  ::int32_t _internal_num_tree_limit() const;
  void _internal_set_num_tree_limit(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.XGBoostOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 37,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const XGBoostOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    ::int32_t num_tree_limit_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull XGBoostOp_class_data_;
// -------------------------------------------------------------------

class TensorFlowOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.TensorFlowOp) */ {
 public:
  inline TensorFlowOp() : TensorFlowOp(nullptr) {}
  ~TensorFlowOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TensorFlowOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TensorFlowOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR TensorFlowOp(::google::protobuf::internal::ConstantInitialized);

  inline TensorFlowOp(const TensorFlowOp& from) : TensorFlowOp(nullptr, from) {}
  inline TensorFlowOp(TensorFlowOp&& from) noexcept
      : TensorFlowOp(nullptr, ::std::move(from)) {}
  inline TensorFlowOp& operator=(const TensorFlowOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline TensorFlowOp& operator=(TensorFlowOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const TensorFlowOp& default_instance() {
    return *reinterpret_cast<const TensorFlowOp*>(
        &_TensorFlowOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(TensorFlowOp& a, TensorFlowOp& b) { a.Swap(&b); }
  inline void Swap(TensorFlowOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TensorFlowOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  TensorFlowOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TensorFlowOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TensorFlowOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TensorFlowOp& from) { TensorFlowOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TensorFlowOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.TensorFlowOp"; }

  explicit TensorFlowOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TensorFlowOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TensorFlowOp& from);
  TensorFlowOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TensorFlowOp&& from) noexcept
      : TensorFlowOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kInputsFieldNumber = 2,
    kOutputsFieldNumber = 3,
    kFileNameFieldNumber = 1,
    kTfVersionFieldNumber = 4,
  };
  // repeated string inputs = 2;
  int inputs_size() const;
  private:
  int _internal_inputs_size() const;

  public:
  void clear_inputs() ;
  const ::std::string& inputs(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_inputs(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_inputs(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_inputs();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_inputs(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& inputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_inputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_inputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_inputs();

  public:
  // repeated string outputs = 3;
  int outputs_size() const;
  private:
  int _internal_outputs_size() const;

  public:
  void clear_outputs() ;
  const ::std::string& outputs(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_outputs(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_outputs(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_outputs();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_outputs(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& outputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_outputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_outputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_outputs();

  public:
  // string file_name = 1;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // string tf_version = 4;
  void clear_tf_version() ;
  const ::std::string& tf_version() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_tf_version(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_tf_version();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_tf_version();
  void set_allocated_tf_version(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_tf_version() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_tf_version(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_tf_version();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.TensorFlowOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   0, 63,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TensorFlowOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> inputs_;
    ::google::protobuf::RepeatedPtrField<::std::string> outputs_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    ::google::protobuf::internal::ArenaStringPtr tf_version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull TensorFlowOp_class_data_;
// -------------------------------------------------------------------

class SparseValue final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.SparseValue) */ {
 public:
  inline SparseValue() : SparseValue(nullptr) {}
  ~SparseValue() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SparseValue* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SparseValue));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR SparseValue(::google::protobuf::internal::ConstantInitialized);

  inline SparseValue(const SparseValue& from) : SparseValue(nullptr, from) {}
  inline SparseValue(SparseValue&& from) noexcept
      : SparseValue(nullptr, ::std::move(from)) {}
  inline SparseValue& operator=(const SparseValue& from) {
    CopyFrom(from);
    return *this;
  }
  inline SparseValue& operator=(SparseValue&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const SparseValue& default_instance() {
    return *reinterpret_cast<const SparseValue*>(
        &_SparseValue_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(SparseValue& a, SparseValue& b) { a.Swap(&b); }
  inline void Swap(SparseValue* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SparseValue* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  SparseValue* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SparseValue>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SparseValue& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SparseValue& from) { SparseValue::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SparseValue* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.SparseValue"; }

  explicit SparseValue(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SparseValue(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SparseValue& from);
  SparseValue(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SparseValue&& from) noexcept
      : SparseValue(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOrigFeatureNameFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // string orig_feature_name = 1;
  void clear_orig_feature_name() ;
  const ::std::string& orig_feature_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_orig_feature_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_orig_feature_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_orig_feature_name();
  void set_allocated_orig_feature_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_orig_feature_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_orig_feature_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_orig_feature_name();

  public:
  // double value = 2;
  void clear_value() ;
  double value() const;
  void set_value(double value);

  private:
  double _internal_value() const;
  void _internal_set_value(double value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.SparseValue)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 47,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SparseValue& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr orig_feature_name_;
    double value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull SparseValue_class_data_;
// -------------------------------------------------------------------

class PytorchOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.PytorchOp) */ {
 public:
  inline PytorchOp() : PytorchOp(nullptr) {}
  ~PytorchOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(PytorchOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(PytorchOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR PytorchOp(::google::protobuf::internal::ConstantInitialized);

  inline PytorchOp(const PytorchOp& from) : PytorchOp(nullptr, from) {}
  inline PytorchOp(PytorchOp&& from) noexcept
      : PytorchOp(nullptr, ::std::move(from)) {}
  inline PytorchOp& operator=(const PytorchOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline PytorchOp& operator=(PytorchOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const PytorchOp& default_instance() {
    return *reinterpret_cast<const PytorchOp*>(
        &_PytorchOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(PytorchOp& a, PytorchOp& b) { a.Swap(&b); }
  inline void Swap(PytorchOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PytorchOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  PytorchOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PytorchOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PytorchOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PytorchOp& from) { PytorchOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(PytorchOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.PytorchOp"; }

  explicit PytorchOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PytorchOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PytorchOp& from);
  PytorchOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PytorchOp&& from) noexcept
      : PytorchOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTensorSizesFieldNumber = 3,
    kTensorTypesFieldNumber = 4,
    kFileNameFieldNumber = 1,
    kPytorchVersionFieldNumber = 2,
  };
  // repeated int32 tensor_sizes = 3;
  int tensor_sizes_size() const;
  private:
  int _internal_tensor_sizes_size() const;

  public:
  void clear_tensor_sizes() ;
  ::int32_t tensor_sizes(int index) const;
  void set_tensor_sizes(int index, ::int32_t value);
  void add_tensor_sizes(::int32_t value);
  const ::google::protobuf::RepeatedField<::int32_t>& tensor_sizes() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL mutable_tensor_sizes();

  private:
  const ::google::protobuf::RepeatedField<::int32_t>& _internal_tensor_sizes() const;
  ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL _internal_mutable_tensor_sizes();

  public:
  // repeated .mojo.spec.TorchTensorType tensor_types = 4;
  int tensor_types_size() const;
  private:
  int _internal_tensor_types_size() const;

  public:
  void clear_tensor_types() ;
  public:
  ::mojo::spec::TorchTensorType tensor_types(int index) const;
  void set_tensor_types(int index, ::mojo::spec::TorchTensorType value);
  void add_tensor_types(::mojo::spec::TorchTensorType value);
  const ::google::protobuf::RepeatedField<int>& tensor_types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL mutable_tensor_types();

  private:
  const ::google::protobuf::RepeatedField<int>& _internal_tensor_types() const;
  ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL _internal_mutable_tensor_types();

  public:
  // string file_name = 1;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // string pytorch_version = 2;
  void clear_pytorch_version() ;
  const ::std::string& pytorch_version() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_pytorch_version(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_pytorch_version();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_pytorch_version();
  void set_allocated_pytorch_version(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_pytorch_version() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_pytorch_version(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_pytorch_version();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.PytorchOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 4,
                                   0, 52,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const PytorchOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int32_t> tensor_sizes_;
    ::google::protobuf::internal::CachedSize _tensor_sizes_cached_byte_size_;
    ::google::protobuf::RepeatedField<int> tensor_types_;
    ::google::protobuf::internal::CachedSize _tensor_types_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    ::google::protobuf::internal::ArenaStringPtr pytorch_version_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull PytorchOp_class_data_;
// -------------------------------------------------------------------

class Pipeline_FormatStringEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::std::string, ::std::string,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                             ::google::protobuf::internal::WireFormatLite::TYPE_STRING> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::std::string, ::std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>;
  Pipeline_FormatStringEntry_DoNotUse();
  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Pipeline_FormatStringEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized);
  explicit Pipeline_FormatStringEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_default_instance() {
    return &_Pipeline_FormatStringEntry_DoNotUse_default_instance_;
  }


  static constexpr auto InternalGenerateClassData_();

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_Pipeline_2eproto;

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 53,
                                   2>
      _table_;

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
extern const ::google::protobuf::internal::ClassDataFull Pipeline_FormatStringEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class LinearBlenderOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.LinearBlenderOp) */ {
 public:
  inline LinearBlenderOp() : LinearBlenderOp(nullptr) {}
  ~LinearBlenderOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LinearBlenderOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LinearBlenderOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR LinearBlenderOp(::google::protobuf::internal::ConstantInitialized);

  inline LinearBlenderOp(const LinearBlenderOp& from) : LinearBlenderOp(nullptr, from) {}
  inline LinearBlenderOp(LinearBlenderOp&& from) noexcept
      : LinearBlenderOp(nullptr, ::std::move(from)) {}
  inline LinearBlenderOp& operator=(const LinearBlenderOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline LinearBlenderOp& operator=(LinearBlenderOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const LinearBlenderOp& default_instance() {
    return *reinterpret_cast<const LinearBlenderOp*>(
        &_LinearBlenderOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(LinearBlenderOp& a, LinearBlenderOp& b) { a.Swap(&b); }
  inline void Swap(LinearBlenderOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LinearBlenderOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  LinearBlenderOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LinearBlenderOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LinearBlenderOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LinearBlenderOp& from) { LinearBlenderOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LinearBlenderOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.LinearBlenderOp"; }

  explicit LinearBlenderOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LinearBlenderOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LinearBlenderOp& from);
  LinearBlenderOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LinearBlenderOp&& from) noexcept
      : LinearBlenderOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kWeightsFieldNumber = 1,
  };
  // repeated double weights = 1;
  int weights_size() const;
  private:
  int _internal_weights_size() const;

  public:
  void clear_weights() ;
  double weights(int index) const;
  void set_weights(int index, double value);
  void add_weights(double value);
  const ::google::protobuf::RepeatedField<double>& weights() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL mutable_weights();

  private:
  const ::google::protobuf::RepeatedField<double>& _internal_weights() const;
  ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL _internal_mutable_weights();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.LinearBlenderOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LinearBlenderOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<double> weights_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull LinearBlenderOp_class_data_;
// -------------------------------------------------------------------

class LightGBMOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.LightGBMOp) */ {
 public:
  inline LightGBMOp() : LightGBMOp(nullptr) {}
  ~LightGBMOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LightGBMOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LightGBMOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR LightGBMOp(::google::protobuf::internal::ConstantInitialized);

  inline LightGBMOp(const LightGBMOp& from) : LightGBMOp(nullptr, from) {}
  inline LightGBMOp(LightGBMOp&& from) noexcept
      : LightGBMOp(nullptr, ::std::move(from)) {}
  inline LightGBMOp& operator=(const LightGBMOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline LightGBMOp& operator=(LightGBMOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const LightGBMOp& default_instance() {
    return *reinterpret_cast<const LightGBMOp*>(
        &_LightGBMOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(LightGBMOp& a, LightGBMOp& b) { a.Swap(&b); }
  inline void Swap(LightGBMOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LightGBMOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  LightGBMOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LightGBMOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LightGBMOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LightGBMOp& from) { LightGBMOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LightGBMOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.LightGBMOp"; }

  explicit LightGBMOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LightGBMOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LightGBMOp& from);
  LightGBMOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LightGBMOp&& from) noexcept
      : LightGBMOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFileNameFieldNumber = 2,
    kNumTreeLimitFieldNumber = 1,
  };
  // string file_name = 2;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // int32 num_tree_limit = 1;
  void clear_num_tree_limit() ;
  ::int32_t num_tree_limit() const;
  void set_num_tree_limit(::int32_t value);

  private:
  ::int32_t _internal_num_tree_limit() const;
  void _internal_set_num_tree_limit(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.LightGBMOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 38,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LightGBMOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    ::int32_t num_tree_limit_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull LightGBMOp_class_data_;
// -------------------------------------------------------------------

class License final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.License) */ {
 public:
  inline License() : License(nullptr) {}
  ~License() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(License* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(License));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR License(::google::protobuf::internal::ConstantInitialized);

  inline License(const License& from) : License(nullptr, from) {}
  inline License(License&& from) noexcept
      : License(nullptr, ::std::move(from)) {}
  inline License& operator=(const License& from) {
    CopyFrom(from);
    return *this;
  }
  inline License& operator=(License&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const License& default_instance() {
    return *reinterpret_cast<const License*>(
        &_License_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(License& a, License& b) { a.Swap(&b); }
  inline void Swap(License* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(License* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  License* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<License>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const License& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const License& from) { License::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(License* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.License"; }

  explicit License(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  License(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const License& from);
  License(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, License&& from) noexcept
      : License(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLicenseSerialNumberFieldNumber = 1,
    kLicenseTypeFieldNumber = 2,
    kLicenseeUserIdFieldNumber = 3,
  };
  // string license_serial_number = 1;
  void clear_license_serial_number() ;
  const ::std::string& license_serial_number() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_license_serial_number(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_license_serial_number();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_license_serial_number();
  void set_allocated_license_serial_number(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_license_serial_number() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_license_serial_number(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_license_serial_number();

  public:
  // string license_type = 2;
  void clear_license_type() ;
  const ::std::string& license_type() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_license_type(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_license_type();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_license_type();
  void set_allocated_license_type(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_license_type() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_license_type(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_license_type();

  public:
  // string licensee_user_id = 3;
  void clear_licensee_user_id() ;
  const ::std::string& licensee_user_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_licensee_user_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_licensee_user_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_licensee_user_id();
  void set_allocated_licensee_user_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_licensee_user_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_licensee_user_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_licensee_user_id();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.License)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   0, 75,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const License& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr license_serial_number_;
    ::google::protobuf::internal::ArenaStringPtr license_type_;
    ::google::protobuf::internal::ArenaStringPtr licensee_user_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull License_class_data_;
// -------------------------------------------------------------------

class ImgResizeShorterOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ImgResizeShorterOp) */ {
 public:
  inline ImgResizeShorterOp() : ImgResizeShorterOp(nullptr) {}
  ~ImgResizeShorterOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ImgResizeShorterOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ImgResizeShorterOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ImgResizeShorterOp(::google::protobuf::internal::ConstantInitialized);

  inline ImgResizeShorterOp(const ImgResizeShorterOp& from) : ImgResizeShorterOp(nullptr, from) {}
  inline ImgResizeShorterOp(ImgResizeShorterOp&& from) noexcept
      : ImgResizeShorterOp(nullptr, ::std::move(from)) {}
  inline ImgResizeShorterOp& operator=(const ImgResizeShorterOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ImgResizeShorterOp& operator=(ImgResizeShorterOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ImgResizeShorterOp& default_instance() {
    return *reinterpret_cast<const ImgResizeShorterOp*>(
        &_ImgResizeShorterOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(ImgResizeShorterOp& a, ImgResizeShorterOp& b) { a.Swap(&b); }
  inline void Swap(ImgResizeShorterOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ImgResizeShorterOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ImgResizeShorterOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ImgResizeShorterOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ImgResizeShorterOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ImgResizeShorterOp& from) { ImgResizeShorterOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ImgResizeShorterOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ImgResizeShorterOp"; }

  explicit ImgResizeShorterOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ImgResizeShorterOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ImgResizeShorterOp& from);
  ImgResizeShorterOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ImgResizeShorterOp&& from) noexcept
      : ImgResizeShorterOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTargetSizeFieldNumber = 1,
  };
  // int32 target_size = 1;
  void clear_target_size() ;
  ::int32_t target_size() const;
  void set_target_size(::int32_t value);

  private:
  ::int32_t _internal_target_size() const;
  void _internal_set_target_size(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ImgResizeShorterOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ImgResizeShorterOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t target_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ImgResizeShorterOp_class_data_;
// -------------------------------------------------------------------

class ImgResizeOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ImgResizeOp) */ {
 public:
  inline ImgResizeOp() : ImgResizeOp(nullptr) {}
  ~ImgResizeOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ImgResizeOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ImgResizeOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ImgResizeOp(::google::protobuf::internal::ConstantInitialized);

  inline ImgResizeOp(const ImgResizeOp& from) : ImgResizeOp(nullptr, from) {}
  inline ImgResizeOp(ImgResizeOp&& from) noexcept
      : ImgResizeOp(nullptr, ::std::move(from)) {}
  inline ImgResizeOp& operator=(const ImgResizeOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ImgResizeOp& operator=(ImgResizeOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ImgResizeOp& default_instance() {
    return *reinterpret_cast<const ImgResizeOp*>(
        &_ImgResizeOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(ImgResizeOp& a, ImgResizeOp& b) { a.Swap(&b); }
  inline void Swap(ImgResizeOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ImgResizeOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ImgResizeOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ImgResizeOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ImgResizeOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ImgResizeOp& from) { ImgResizeOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ImgResizeOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ImgResizeOp"; }

  explicit ImgResizeOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ImgResizeOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ImgResizeOp& from);
  ImgResizeOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ImgResizeOp&& from) noexcept
      : ImgResizeOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTargetHeightFieldNumber = 1,
    kTargetWidthFieldNumber = 2,
  };
  // int32 target_height = 1;
  void clear_target_height() ;
  ::int32_t target_height() const;
  void set_target_height(::int32_t value);

  private:
  ::int32_t _internal_target_height() const;
  void _internal_set_target_height(::int32_t value);

  public:
  // int32 target_width = 2;
  void clear_target_width() ;
  ::int32_t target_width() const;
  void set_target_width(::int32_t value);

  private:
  ::int32_t _internal_target_width() const;
  void _internal_set_target_width(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ImgResizeOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ImgResizeOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t target_height_;
    ::int32_t target_width_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ImgResizeOp_class_data_;
// -------------------------------------------------------------------

class ImgCenterCropOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ImgCenterCropOp) */ {
 public:
  inline ImgCenterCropOp() : ImgCenterCropOp(nullptr) {}
  ~ImgCenterCropOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ImgCenterCropOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ImgCenterCropOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ImgCenterCropOp(::google::protobuf::internal::ConstantInitialized);

  inline ImgCenterCropOp(const ImgCenterCropOp& from) : ImgCenterCropOp(nullptr, from) {}
  inline ImgCenterCropOp(ImgCenterCropOp&& from) noexcept
      : ImgCenterCropOp(nullptr, ::std::move(from)) {}
  inline ImgCenterCropOp& operator=(const ImgCenterCropOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ImgCenterCropOp& operator=(ImgCenterCropOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ImgCenterCropOp& default_instance() {
    return *reinterpret_cast<const ImgCenterCropOp*>(
        &_ImgCenterCropOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(ImgCenterCropOp& a, ImgCenterCropOp& b) { a.Swap(&b); }
  inline void Swap(ImgCenterCropOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ImgCenterCropOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ImgCenterCropOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ImgCenterCropOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ImgCenterCropOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ImgCenterCropOp& from) { ImgCenterCropOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ImgCenterCropOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ImgCenterCropOp"; }

  explicit ImgCenterCropOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ImgCenterCropOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ImgCenterCropOp& from);
  ImgCenterCropOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ImgCenterCropOp&& from) noexcept
      : ImgCenterCropOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTargetHeightFieldNumber = 1,
    kTargetWidthFieldNumber = 2,
  };
  // int32 target_height = 1;
  void clear_target_height() ;
  ::int32_t target_height() const;
  void set_target_height(::int32_t value);

  private:
  ::int32_t _internal_target_height() const;
  void _internal_set_target_height(::int32_t value);

  public:
  // int32 target_width = 2;
  void clear_target_width() ;
  ::int32_t target_width() const;
  void set_target_width(::int32_t value);

  private:
  ::int32_t _internal_target_width() const;
  void _internal_set_target_width(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ImgCenterCropOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ImgCenterCropOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::int32_t target_height_;
    ::int32_t target_width_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ImgCenterCropOp_class_data_;
// -------------------------------------------------------------------

class ImageNetPreprocessingOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ImageNetPreprocessingOp) */ {
 public:
  inline ImageNetPreprocessingOp() : ImageNetPreprocessingOp(nullptr) {}
  ~ImageNetPreprocessingOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ImageNetPreprocessingOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ImageNetPreprocessingOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ImageNetPreprocessingOp(::google::protobuf::internal::ConstantInitialized);

  inline ImageNetPreprocessingOp(const ImageNetPreprocessingOp& from) : ImageNetPreprocessingOp(nullptr, from) {}
  inline ImageNetPreprocessingOp(ImageNetPreprocessingOp&& from) noexcept
      : ImageNetPreprocessingOp(nullptr, ::std::move(from)) {}
  inline ImageNetPreprocessingOp& operator=(const ImageNetPreprocessingOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ImageNetPreprocessingOp& operator=(ImageNetPreprocessingOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ImageNetPreprocessingOp& default_instance() {
    return *reinterpret_cast<const ImageNetPreprocessingOp*>(
        &_ImageNetPreprocessingOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(ImageNetPreprocessingOp& a, ImageNetPreprocessingOp& b) { a.Swap(&b); }
  inline void Swap(ImageNetPreprocessingOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ImageNetPreprocessingOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ImageNetPreprocessingOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ImageNetPreprocessingOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ImageNetPreprocessingOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ImageNetPreprocessingOp& from) { ImageNetPreprocessingOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ImageNetPreprocessingOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ImageNetPreprocessingOp"; }

  explicit ImageNetPreprocessingOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ImageNetPreprocessingOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ImageNetPreprocessingOp& from);
  ImageNetPreprocessingOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ImageNetPreprocessingOp&& from) noexcept
      : ImageNetPreprocessingOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMeanFieldNumber = 2,
    kStdFieldNumber = 3,
    kModeFieldNumber = 1,
  };
  // repeated float mean = 2;
  int mean_size() const;
  private:
  int _internal_mean_size() const;

  public:
  void clear_mean() ;
  float mean(int index) const;
  void set_mean(int index, float value);
  void add_mean(float value);
  const ::google::protobuf::RepeatedField<float>& mean() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_mean();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_mean() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_mean();

  public:
  // repeated float std = 3;
  int std_size() const;
  private:
  int _internal_std_size() const;

  public:
  void clear_std() ;
  float std(int index) const;
  void set_std(int index, float value);
  void add_std(float value);
  const ::google::protobuf::RepeatedField<float>& std() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_std();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_std() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_std();

  public:
  // .mojo.spec.ImageNetPreprocessingMode mode = 1;
  void clear_mode() ;
  ::mojo::spec::ImageNetPreprocessingMode mode() const;
  void set_mode(::mojo::spec::ImageNetPreprocessingMode value);

  private:
  ::mojo::spec::ImageNetPreprocessingMode _internal_mode() const;
  void _internal_set_mode(::mojo::spec::ImageNetPreprocessingMode value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ImageNetPreprocessingOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 3,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ImageNetPreprocessingOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<float> mean_;
    ::google::protobuf::RepeatedField<float> std_;
    int mode_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ImageNetPreprocessingOp_class_data_;
// -------------------------------------------------------------------

class IdentityOp final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.IdentityOp) */ {
 public:
  inline IdentityOp() : IdentityOp(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(IdentityOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(IdentityOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR IdentityOp(::google::protobuf::internal::ConstantInitialized);

  inline IdentityOp(const IdentityOp& from) : IdentityOp(nullptr, from) {}
  inline IdentityOp(IdentityOp&& from) noexcept
      : IdentityOp(nullptr, ::std::move(from)) {}
  inline IdentityOp& operator=(const IdentityOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline IdentityOp& operator=(IdentityOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const IdentityOp& default_instance() {
    return *reinterpret_cast<const IdentityOp*>(
        &_IdentityOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(IdentityOp& a, IdentityOp& b) { a.Swap(&b); }
  inline void Swap(IdentityOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(IdentityOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  IdentityOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<IdentityOp>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const IdentityOp& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const IdentityOp& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.IdentityOp"; }

  explicit IdentityOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IdentityOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IdentityOp& from);
  IdentityOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IdentityOp&& from) noexcept
      : IdentityOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.IdentityOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull IdentityOp_class_data_;
// -------------------------------------------------------------------

class ExecPipeOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ExecPipeOp) */ {
 public:
  inline ExecPipeOp() : ExecPipeOp(nullptr) {}
  ~ExecPipeOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ExecPipeOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ExecPipeOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ExecPipeOp(::google::protobuf::internal::ConstantInitialized);

  inline ExecPipeOp(const ExecPipeOp& from) : ExecPipeOp(nullptr, from) {}
  inline ExecPipeOp(ExecPipeOp&& from) noexcept
      : ExecPipeOp(nullptr, ::std::move(from)) {}
  inline ExecPipeOp& operator=(const ExecPipeOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline ExecPipeOp& operator=(ExecPipeOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ExecPipeOp& default_instance() {
    return *reinterpret_cast<const ExecPipeOp*>(
        &_ExecPipeOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(ExecPipeOp& a, ExecPipeOp& b) { a.Swap(&b); }
  inline void Swap(ExecPipeOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ExecPipeOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ExecPipeOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ExecPipeOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ExecPipeOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ExecPipeOp& from) { ExecPipeOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ExecPipeOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ExecPipeOp"; }

  explicit ExecPipeOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ExecPipeOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ExecPipeOp& from);
  ExecPipeOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ExecPipeOp&& from) noexcept
      : ExecPipeOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFileNameFieldNumber = 1,
  };
  // string file_name = 1;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ExecPipeOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   0, 38,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ExecPipeOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ExecPipeOp_class_data_;
// -------------------------------------------------------------------

class CatBoostOp final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.CatBoostOp) */ {
 public:
  inline CatBoostOp() : CatBoostOp(nullptr) {}
  ~CatBoostOp() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(CatBoostOp* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(CatBoostOp));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR CatBoostOp(::google::protobuf::internal::ConstantInitialized);

  inline CatBoostOp(const CatBoostOp& from) : CatBoostOp(nullptr, from) {}
  inline CatBoostOp(CatBoostOp&& from) noexcept
      : CatBoostOp(nullptr, ::std::move(from)) {}
  inline CatBoostOp& operator=(const CatBoostOp& from) {
    CopyFrom(from);
    return *this;
  }
  inline CatBoostOp& operator=(CatBoostOp&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CatBoostOp& default_instance() {
    return *reinterpret_cast<const CatBoostOp*>(
        &_CatBoostOp_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(CatBoostOp& a, CatBoostOp& b) { a.Swap(&b); }
  inline void Swap(CatBoostOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CatBoostOp* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CatBoostOp* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CatBoostOp>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CatBoostOp& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CatBoostOp& from) { CatBoostOp::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(CatBoostOp* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.CatBoostOp"; }

  explicit CatBoostOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CatBoostOp(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CatBoostOp& from);
  CatBoostOp(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CatBoostOp&& from) noexcept
      : CatBoostOp(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFileNameFieldNumber = 2,
    kNumTreeLimitFieldNumber = 1,
  };
  // string file_name = 2;
  void clear_file_name() ;
  const ::std::string& file_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_file_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_file_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_file_name();
  void set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_file_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_file_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_file_name();

  public:
  // int32 num_tree_limit = 1;
  void clear_num_tree_limit() ;
  ::int32_t num_tree_limit() const;
  void set_num_tree_limit(::int32_t value);

  private:
  ::int32_t _internal_num_tree_limit() const;
  void _internal_set_num_tree_limit(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.CatBoostOp)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 38,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CatBoostOp& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr file_name_;
    ::int32_t num_tree_limit_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull CatBoostOp_class_data_;
// -------------------------------------------------------------------

class OrigMatrixSparseRow final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.OrigMatrixSparseRow) */ {
 public:
  inline OrigMatrixSparseRow() : OrigMatrixSparseRow(nullptr) {}
  ~OrigMatrixSparseRow() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(OrigMatrixSparseRow* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(OrigMatrixSparseRow));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR OrigMatrixSparseRow(::google::protobuf::internal::ConstantInitialized);

  inline OrigMatrixSparseRow(const OrigMatrixSparseRow& from) : OrigMatrixSparseRow(nullptr, from) {}
  inline OrigMatrixSparseRow(OrigMatrixSparseRow&& from) noexcept
      : OrigMatrixSparseRow(nullptr, ::std::move(from)) {}
  inline OrigMatrixSparseRow& operator=(const OrigMatrixSparseRow& from) {
    CopyFrom(from);
    return *this;
  }
  inline OrigMatrixSparseRow& operator=(OrigMatrixSparseRow&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const OrigMatrixSparseRow& default_instance() {
    return *reinterpret_cast<const OrigMatrixSparseRow*>(
        &_OrigMatrixSparseRow_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(OrigMatrixSparseRow& a, OrigMatrixSparseRow& b) { a.Swap(&b); }
  inline void Swap(OrigMatrixSparseRow* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OrigMatrixSparseRow* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  OrigMatrixSparseRow* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OrigMatrixSparseRow>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OrigMatrixSparseRow& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OrigMatrixSparseRow& from) { OrigMatrixSparseRow::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(OrigMatrixSparseRow* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.OrigMatrixSparseRow"; }

  explicit OrigMatrixSparseRow(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OrigMatrixSparseRow(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OrigMatrixSparseRow& from);
  OrigMatrixSparseRow(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OrigMatrixSparseRow&& from) noexcept
      : OrigMatrixSparseRow(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRowFieldNumber = 2,
    kRawFeatureNameFieldNumber = 1,
  };
  // repeated .mojo.spec.SparseValue row = 2;
  int row_size() const;
  private:
  int _internal_row_size() const;

  public:
  void clear_row() ;
  ::mojo::spec::SparseValue* PROTOBUF_NONNULL mutable_row(int index);
  ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>* PROTOBUF_NONNULL mutable_row();

  private:
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>& _internal_row() const;
  ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>* PROTOBUF_NONNULL _internal_mutable_row();
  public:
  const ::mojo::spec::SparseValue& row(int index) const;
  ::mojo::spec::SparseValue* PROTOBUF_NONNULL add_row();
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>& row() const;
  // string raw_feature_name = 1;
  void clear_raw_feature_name() ;
  const ::std::string& raw_feature_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_raw_feature_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_raw_feature_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_raw_feature_name();
  void set_allocated_raw_feature_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_raw_feature_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_raw_feature_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_raw_feature_name();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.OrigMatrixSparseRow)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 54,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OrigMatrixSparseRow& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::mojo::spec::SparseValue > row_;
    ::google::protobuf::internal::ArenaStringPtr raw_feature_name_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull OrigMatrixSparseRow_class_data_;
// -------------------------------------------------------------------

class Frame final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.Frame) */ {
 public:
  inline Frame() : Frame(nullptr) {}
  ~Frame() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Frame* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Frame));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Frame(::google::protobuf::internal::ConstantInitialized);

  inline Frame(const Frame& from) : Frame(nullptr, from) {}
  inline Frame(Frame&& from) noexcept
      : Frame(nullptr, ::std::move(from)) {}
  inline Frame& operator=(const Frame& from) {
    CopyFrom(from);
    return *this;
  }
  inline Frame& operator=(Frame&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Frame& default_instance() {
    return *reinterpret_cast<const Frame*>(
        &_Frame_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(Frame& a, Frame& b) { a.Swap(&b); }
  inline void Swap(Frame* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Frame* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Frame* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Frame>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Frame& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Frame& from) { Frame::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Frame* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Frame"; }

  explicit Frame(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Frame(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Frame& from);
  Frame(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Frame&& from) noexcept
      : Frame(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kColumnsFieldNumber = 1,
  };
  // repeated .mojo.spec.Column columns = 1;
  int columns_size() const;
  private:
  int _internal_columns_size() const;

  public:
  void clear_columns() ;
  ::mojo::spec::Column* PROTOBUF_NONNULL mutable_columns(int index);
  ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>* PROTOBUF_NONNULL mutable_columns();

  private:
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>& _internal_columns() const;
  ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>* PROTOBUF_NONNULL _internal_mutable_columns();
  public:
  const ::mojo::spec::Column& columns(int index) const;
  ::mojo::spec::Column* PROTOBUF_NONNULL add_columns();
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>& columns() const;
  // @@protoc_insertion_point(class_scope:mojo.spec.Frame)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 1,
                                   1, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Frame& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::mojo::spec::Column > columns_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Frame_class_data_;
// -------------------------------------------------------------------

class Transformation final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.Transformation) */ {
 public:
  inline Transformation() : Transformation(nullptr) {}
  ~Transformation() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Transformation* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Transformation));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Transformation(::google::protobuf::internal::ConstantInitialized);

  inline Transformation(const Transformation& from) : Transformation(nullptr, from) {}
  inline Transformation(Transformation&& from) noexcept
      : Transformation(nullptr, ::std::move(from)) {}
  inline Transformation& operator=(const Transformation& from) {
    CopyFrom(from);
    return *this;
  }
  inline Transformation& operator=(Transformation&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Transformation& default_instance() {
    return *reinterpret_cast<const Transformation*>(
        &_Transformation_default_instance_);
  }
  enum TypeCase {
    kConstBinaryOp = 4,
    kBinaryOp = 5,
    kAsTypeOp = 6,
    kExpOp = 7,
    kExpm1Op = 8,
    kScaleOp = 9,
    kSigmoidOp = 10,
    kPowerOp = 11,
    kLogOp = 12,
    kSqrtOp = 13,
    kSoftmaxOp = 14,
    kAggOp = 15,
    kMedianOp = 16,
    kDatepartOp = 17,
    kMomentOp = 18,
    kNormalizeOp = 19,
    kIsNaOp = 20,
    kFillNaOp = 21,
    kImputeNaOp = 22,
    kClipOp = 23,
    kKmeansOp = 24,
    kMatrixProductOp = 25,
    kCountVectorizerOp = 26,
    kReplaceOp = 27,
    kIntervalMapOp = 28,
    kMapOp = 29,
    kExecPipeOp = 30,
    kXgbOp = 31,
    kLgbmOp = 32,
    kNewColOp = 33,
    kTfOp = 34,
    kKerasTokenOp = 35,
    kFtrlOp = 36,
    kPytorchTokenOp = 37,
    kPytorchOp = 38,
    kCustomOp = 39,
    kLinearBlenderOp = 40,
    kImgResizeOp = 41,
    kImagenetPreprocessingOp = 42,
    kIdentityOp = 43,
    kCatboostOp = 44,
    kImgCenterCropOp = 45,
    kImgResizeShorterOp = 46,
    TYPE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(Transformation& a, Transformation& b) { a.Swap(&b); }
  inline void Swap(Transformation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Transformation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Transformation* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Transformation>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Transformation& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Transformation& from) { Transformation::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Transformation* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Transformation"; }

  explicit Transformation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Transformation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Transformation& from);
  Transformation(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Transformation&& from) noexcept
      : Transformation(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kInputsFieldNumber = 2,
    kOutputsFieldNumber = 3,
    kGroupIdFieldNumber = 1,
    kConstBinaryOpFieldNumber = 4,
    kBinaryOpFieldNumber = 5,
    kAsTypeOpFieldNumber = 6,
    kExpOpFieldNumber = 7,
    kExpm1OpFieldNumber = 8,
    kScaleOpFieldNumber = 9,
    kSigmoidOpFieldNumber = 10,
    kPowerOpFieldNumber = 11,
    kLogOpFieldNumber = 12,
    kSqrtOpFieldNumber = 13,
    kSoftmaxOpFieldNumber = 14,
    kAggOpFieldNumber = 15,
    kMedianOpFieldNumber = 16,
    kDatepartOpFieldNumber = 17,
    kMomentOpFieldNumber = 18,
    kNormalizeOpFieldNumber = 19,
    kIsNaOpFieldNumber = 20,
    kFillNaOpFieldNumber = 21,
    kImputeNaOpFieldNumber = 22,
    kClipOpFieldNumber = 23,
    kKmeansOpFieldNumber = 24,
    kMatrixProductOpFieldNumber = 25,
    kCountVectorizerOpFieldNumber = 26,
    kReplaceOpFieldNumber = 27,
    kIntervalMapOpFieldNumber = 28,
    kMapOpFieldNumber = 29,
    kExecPipeOpFieldNumber = 30,
    kXgbOpFieldNumber = 31,
    kLgbmOpFieldNumber = 32,
    kNewColOpFieldNumber = 33,
    kTfOpFieldNumber = 34,
    kKerasTokenOpFieldNumber = 35,
    kFtrlOpFieldNumber = 36,
    kPytorchTokenOpFieldNumber = 37,
    kPytorchOpFieldNumber = 38,
    kCustomOpFieldNumber = 39,
    kLinearBlenderOpFieldNumber = 40,
    kImgResizeOpFieldNumber = 41,
    kImagenetPreprocessingOpFieldNumber = 42,
    kIdentityOpFieldNumber = 43,
    kCatboostOpFieldNumber = 44,
    kImgCenterCropOpFieldNumber = 45,
    kImgResizeShorterOpFieldNumber = 46,
  };
  // repeated string inputs = 2;
  int inputs_size() const;
  private:
  int _internal_inputs_size() const;

  public:
  void clear_inputs() ;
  const ::std::string& inputs(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_inputs(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_inputs(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_inputs();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_inputs(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& inputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_inputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_inputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_inputs();

  public:
  // repeated string outputs = 3;
  int outputs_size() const;
  private:
  int _internal_outputs_size() const;

  public:
  void clear_outputs() ;
  const ::std::string& outputs(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_outputs(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_outputs(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_outputs();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_outputs(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& outputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_outputs();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_outputs() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_outputs();

  public:
  // int32 group_id = 1;
  void clear_group_id() ;
  ::int32_t group_id() const;
  void set_group_id(::int32_t value);

  private:
  ::int32_t _internal_group_id() const;
  void _internal_set_group_id(::int32_t value);

  public:
  // .mojo.spec.ConstBinaryOp const_binary_op = 4;
  bool has_const_binary_op() const;
  private:
  bool _internal_has_const_binary_op() const;

  public:
  void clear_const_binary_op() ;
  const ::mojo::spec::ConstBinaryOp& const_binary_op() const;
  [[nodiscard]] ::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE release_const_binary_op();
  ::mojo::spec::ConstBinaryOp* PROTOBUF_NONNULL mutable_const_binary_op();
  void set_allocated_const_binary_op(::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_const_binary_op(::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE unsafe_arena_release_const_binary_op();

  private:
  const ::mojo::spec::ConstBinaryOp& _internal_const_binary_op() const;
  ::mojo::spec::ConstBinaryOp* PROTOBUF_NONNULL _internal_mutable_const_binary_op();

  public:
  // .mojo.spec.BinaryOp binary_op = 5;
  bool has_binary_op() const;
  private:
  bool _internal_has_binary_op() const;

  public:
  void clear_binary_op() ;
  const ::mojo::spec::BinaryOp& binary_op() const;
  [[nodiscard]] ::mojo::spec::BinaryOp* PROTOBUF_NULLABLE release_binary_op();
  ::mojo::spec::BinaryOp* PROTOBUF_NONNULL mutable_binary_op();
  void set_allocated_binary_op(::mojo::spec::BinaryOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_binary_op(::mojo::spec::BinaryOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::BinaryOp* PROTOBUF_NULLABLE unsafe_arena_release_binary_op();

  private:
  const ::mojo::spec::BinaryOp& _internal_binary_op() const;
  ::mojo::spec::BinaryOp* PROTOBUF_NONNULL _internal_mutable_binary_op();

  public:
  // .mojo.spec.AsTypeOp as_type_op = 6;
  bool has_as_type_op() const;
  private:
  bool _internal_has_as_type_op() const;

  public:
  void clear_as_type_op() ;
  const ::mojo::spec::AsTypeOp& as_type_op() const;
  [[nodiscard]] ::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE release_as_type_op();
  ::mojo::spec::AsTypeOp* PROTOBUF_NONNULL mutable_as_type_op();
  void set_allocated_as_type_op(::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_as_type_op(::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE unsafe_arena_release_as_type_op();

  private:
  const ::mojo::spec::AsTypeOp& _internal_as_type_op() const;
  ::mojo::spec::AsTypeOp* PROTOBUF_NONNULL _internal_mutable_as_type_op();

  public:
  // .mojo.spec.ExpOp exp_op = 7;
  bool has_exp_op() const;
  private:
  bool _internal_has_exp_op() const;

  public:
  void clear_exp_op() ;
  const ::mojo::spec::ExpOp& exp_op() const;
  [[nodiscard]] ::mojo::spec::ExpOp* PROTOBUF_NULLABLE release_exp_op();
  ::mojo::spec::ExpOp* PROTOBUF_NONNULL mutable_exp_op();
  void set_allocated_exp_op(::mojo::spec::ExpOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_exp_op(::mojo::spec::ExpOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ExpOp* PROTOBUF_NULLABLE unsafe_arena_release_exp_op();

  private:
  const ::mojo::spec::ExpOp& _internal_exp_op() const;
  ::mojo::spec::ExpOp* PROTOBUF_NONNULL _internal_mutable_exp_op();

  public:
  // .mojo.spec.ExpM1Op expm1_op = 8;
  bool has_expm1_op() const;
  private:
  bool _internal_has_expm1_op() const;

  public:
  void clear_expm1_op() ;
  const ::mojo::spec::ExpM1Op& expm1_op() const;
  [[nodiscard]] ::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE release_expm1_op();
  ::mojo::spec::ExpM1Op* PROTOBUF_NONNULL mutable_expm1_op();
  void set_allocated_expm1_op(::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_expm1_op(::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE value);
  ::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE unsafe_arena_release_expm1_op();

  private:
  const ::mojo::spec::ExpM1Op& _internal_expm1_op() const;
  ::mojo::spec::ExpM1Op* PROTOBUF_NONNULL _internal_mutable_expm1_op();

  public:
  // .mojo.spec.ScaleOp scale_op = 9;
  bool has_scale_op() const;
  private:
  bool _internal_has_scale_op() const;

  public:
  void clear_scale_op() ;
  const ::mojo::spec::ScaleOp& scale_op() const;
  [[nodiscard]] ::mojo::spec::ScaleOp* PROTOBUF_NULLABLE release_scale_op();
  ::mojo::spec::ScaleOp* PROTOBUF_NONNULL mutable_scale_op();
  void set_allocated_scale_op(::mojo::spec::ScaleOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_scale_op(::mojo::spec::ScaleOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ScaleOp* PROTOBUF_NULLABLE unsafe_arena_release_scale_op();

  private:
  const ::mojo::spec::ScaleOp& _internal_scale_op() const;
  ::mojo::spec::ScaleOp* PROTOBUF_NONNULL _internal_mutable_scale_op();

  public:
  // .mojo.spec.SigmoidOp sigmoid_op = 10;
  bool has_sigmoid_op() const;
  private:
  bool _internal_has_sigmoid_op() const;

  public:
  void clear_sigmoid_op() ;
  const ::mojo::spec::SigmoidOp& sigmoid_op() const;
  [[nodiscard]] ::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE release_sigmoid_op();
  ::mojo::spec::SigmoidOp* PROTOBUF_NONNULL mutable_sigmoid_op();
  void set_allocated_sigmoid_op(::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sigmoid_op(::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE unsafe_arena_release_sigmoid_op();

  private:
  const ::mojo::spec::SigmoidOp& _internal_sigmoid_op() const;
  ::mojo::spec::SigmoidOp* PROTOBUF_NONNULL _internal_mutable_sigmoid_op();

  public:
  // .mojo.spec.PowerOp power_op = 11;
  bool has_power_op() const;
  private:
  bool _internal_has_power_op() const;

  public:
  void clear_power_op() ;
  const ::mojo::spec::PowerOp& power_op() const;
  [[nodiscard]] ::mojo::spec::PowerOp* PROTOBUF_NULLABLE release_power_op();
  ::mojo::spec::PowerOp* PROTOBUF_NONNULL mutable_power_op();
  void set_allocated_power_op(::mojo::spec::PowerOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_power_op(::mojo::spec::PowerOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::PowerOp* PROTOBUF_NULLABLE unsafe_arena_release_power_op();

  private:
  const ::mojo::spec::PowerOp& _internal_power_op() const;
  ::mojo::spec::PowerOp* PROTOBUF_NONNULL _internal_mutable_power_op();

  public:
  // .mojo.spec.LogOp log_op = 12;
  bool has_log_op() const;
  private:
  bool _internal_has_log_op() const;

  public:
  void clear_log_op() ;
  const ::mojo::spec::LogOp& log_op() const;
  [[nodiscard]] ::mojo::spec::LogOp* PROTOBUF_NULLABLE release_log_op();
  ::mojo::spec::LogOp* PROTOBUF_NONNULL mutable_log_op();
  void set_allocated_log_op(::mojo::spec::LogOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_log_op(::mojo::spec::LogOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::LogOp* PROTOBUF_NULLABLE unsafe_arena_release_log_op();

  private:
  const ::mojo::spec::LogOp& _internal_log_op() const;
  ::mojo::spec::LogOp* PROTOBUF_NONNULL _internal_mutable_log_op();

  public:
  // .mojo.spec.SqrtOp sqrt_op = 13;
  bool has_sqrt_op() const;
  private:
  bool _internal_has_sqrt_op() const;

  public:
  void clear_sqrt_op() ;
  const ::mojo::spec::SqrtOp& sqrt_op() const;
  [[nodiscard]] ::mojo::spec::SqrtOp* PROTOBUF_NULLABLE release_sqrt_op();
  ::mojo::spec::SqrtOp* PROTOBUF_NONNULL mutable_sqrt_op();
  void set_allocated_sqrt_op(::mojo::spec::SqrtOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sqrt_op(::mojo::spec::SqrtOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::SqrtOp* PROTOBUF_NULLABLE unsafe_arena_release_sqrt_op();

  private:
  const ::mojo::spec::SqrtOp& _internal_sqrt_op() const;
  ::mojo::spec::SqrtOp* PROTOBUF_NONNULL _internal_mutable_sqrt_op();

  public:
  // .mojo.spec.SoftmaxOp softmax_op = 14;
  bool has_softmax_op() const;
  private:
  bool _internal_has_softmax_op() const;

  public:
  void clear_softmax_op() ;
  const ::mojo::spec::SoftmaxOp& softmax_op() const;
  [[nodiscard]] ::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE release_softmax_op();
  ::mojo::spec::SoftmaxOp* PROTOBUF_NONNULL mutable_softmax_op();
  void set_allocated_softmax_op(::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_softmax_op(::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE unsafe_arena_release_softmax_op();

  private:
  const ::mojo::spec::SoftmaxOp& _internal_softmax_op() const;
  ::mojo::spec::SoftmaxOp* PROTOBUF_NONNULL _internal_mutable_softmax_op();

  public:
  // .mojo.spec.AggOp agg_op = 15;
  bool has_agg_op() const;
  private:
  bool _internal_has_agg_op() const;

  public:
  void clear_agg_op() ;
  const ::mojo::spec::AggOp& agg_op() const;
  [[nodiscard]] ::mojo::spec::AggOp* PROTOBUF_NULLABLE release_agg_op();
  ::mojo::spec::AggOp* PROTOBUF_NONNULL mutable_agg_op();
  void set_allocated_agg_op(::mojo::spec::AggOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_agg_op(::mojo::spec::AggOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::AggOp* PROTOBUF_NULLABLE unsafe_arena_release_agg_op();

  private:
  const ::mojo::spec::AggOp& _internal_agg_op() const;
  ::mojo::spec::AggOp* PROTOBUF_NONNULL _internal_mutable_agg_op();

  public:
  // .mojo.spec.MedianOp median_op = 16;
  bool has_median_op() const;
  private:
  bool _internal_has_median_op() const;

  public:
  void clear_median_op() ;
  const ::mojo::spec::MedianOp& median_op() const;
  [[nodiscard]] ::mojo::spec::MedianOp* PROTOBUF_NULLABLE release_median_op();
  ::mojo::spec::MedianOp* PROTOBUF_NONNULL mutable_median_op();
  void set_allocated_median_op(::mojo::spec::MedianOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_median_op(::mojo::spec::MedianOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::MedianOp* PROTOBUF_NULLABLE unsafe_arena_release_median_op();

  private:
  const ::mojo::spec::MedianOp& _internal_median_op() const;
  ::mojo::spec::MedianOp* PROTOBUF_NONNULL _internal_mutable_median_op();

  public:
  // .mojo.spec.DatepartOp datepart_op = 17;
  bool has_datepart_op() const;
  private:
  bool _internal_has_datepart_op() const;

  public:
  void clear_datepart_op() ;
  const ::mojo::spec::DatepartOp& datepart_op() const;
  [[nodiscard]] ::mojo::spec::DatepartOp* PROTOBUF_NULLABLE release_datepart_op();
  ::mojo::spec::DatepartOp* PROTOBUF_NONNULL mutable_datepart_op();
  void set_allocated_datepart_op(::mojo::spec::DatepartOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_datepart_op(::mojo::spec::DatepartOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::DatepartOp* PROTOBUF_NULLABLE unsafe_arena_release_datepart_op();

  private:
  const ::mojo::spec::DatepartOp& _internal_datepart_op() const;
  ::mojo::spec::DatepartOp* PROTOBUF_NONNULL _internal_mutable_datepart_op();

  public:
  // .mojo.spec.MomentOp moment_op = 18;
  bool has_moment_op() const;
  private:
  bool _internal_has_moment_op() const;

  public:
  void clear_moment_op() ;
  const ::mojo::spec::MomentOp& moment_op() const;
  [[nodiscard]] ::mojo::spec::MomentOp* PROTOBUF_NULLABLE release_moment_op();
  ::mojo::spec::MomentOp* PROTOBUF_NONNULL mutable_moment_op();
  void set_allocated_moment_op(::mojo::spec::MomentOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_moment_op(::mojo::spec::MomentOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::MomentOp* PROTOBUF_NULLABLE unsafe_arena_release_moment_op();

  private:
  const ::mojo::spec::MomentOp& _internal_moment_op() const;
  ::mojo::spec::MomentOp* PROTOBUF_NONNULL _internal_mutable_moment_op();

  public:
  // .mojo.spec.NormalizeOp normalize_op = 19;
  bool has_normalize_op() const;
  private:
  bool _internal_has_normalize_op() const;

  public:
  void clear_normalize_op() ;
  const ::mojo::spec::NormalizeOp& normalize_op() const;
  [[nodiscard]] ::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE release_normalize_op();
  ::mojo::spec::NormalizeOp* PROTOBUF_NONNULL mutable_normalize_op();
  void set_allocated_normalize_op(::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_normalize_op(::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE unsafe_arena_release_normalize_op();

  private:
  const ::mojo::spec::NormalizeOp& _internal_normalize_op() const;
  ::mojo::spec::NormalizeOp* PROTOBUF_NONNULL _internal_mutable_normalize_op();

  public:
  // .mojo.spec.IsNaOp is_na_op = 20;
  bool has_is_na_op() const;
  private:
  bool _internal_has_is_na_op() const;

  public:
  void clear_is_na_op() ;
  const ::mojo::spec::IsNaOp& is_na_op() const;
  [[nodiscard]] ::mojo::spec::IsNaOp* PROTOBUF_NULLABLE release_is_na_op();
  ::mojo::spec::IsNaOp* PROTOBUF_NONNULL mutable_is_na_op();
  void set_allocated_is_na_op(::mojo::spec::IsNaOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_is_na_op(::mojo::spec::IsNaOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::IsNaOp* PROTOBUF_NULLABLE unsafe_arena_release_is_na_op();

  private:
  const ::mojo::spec::IsNaOp& _internal_is_na_op() const;
  ::mojo::spec::IsNaOp* PROTOBUF_NONNULL _internal_mutable_is_na_op();

  public:
  // .mojo.spec.FillNaOp fill_na_op = 21;
  bool has_fill_na_op() const;
  private:
  bool _internal_has_fill_na_op() const;

  public:
  void clear_fill_na_op() ;
  const ::mojo::spec::FillNaOp& fill_na_op() const;
  [[nodiscard]] ::mojo::spec::FillNaOp* PROTOBUF_NULLABLE release_fill_na_op();
  ::mojo::spec::FillNaOp* PROTOBUF_NONNULL mutable_fill_na_op();
  void set_allocated_fill_na_op(::mojo::spec::FillNaOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fill_na_op(::mojo::spec::FillNaOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::FillNaOp* PROTOBUF_NULLABLE unsafe_arena_release_fill_na_op();

  private:
  const ::mojo::spec::FillNaOp& _internal_fill_na_op() const;
  ::mojo::spec::FillNaOp* PROTOBUF_NONNULL _internal_mutable_fill_na_op();

  public:
  // .mojo.spec.ImputeNaOp impute_na_op = 22;
  bool has_impute_na_op() const;
  private:
  bool _internal_has_impute_na_op() const;

  public:
  void clear_impute_na_op() ;
  const ::mojo::spec::ImputeNaOp& impute_na_op() const;
  [[nodiscard]] ::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE release_impute_na_op();
  ::mojo::spec::ImputeNaOp* PROTOBUF_NONNULL mutable_impute_na_op();
  void set_allocated_impute_na_op(::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_impute_na_op(::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE unsafe_arena_release_impute_na_op();

  private:
  const ::mojo::spec::ImputeNaOp& _internal_impute_na_op() const;
  ::mojo::spec::ImputeNaOp* PROTOBUF_NONNULL _internal_mutable_impute_na_op();

  public:
  // .mojo.spec.ClipOp clip_op = 23;
  bool has_clip_op() const;
  private:
  bool _internal_has_clip_op() const;

  public:
  void clear_clip_op() ;
  const ::mojo::spec::ClipOp& clip_op() const;
  [[nodiscard]] ::mojo::spec::ClipOp* PROTOBUF_NULLABLE release_clip_op();
  ::mojo::spec::ClipOp* PROTOBUF_NONNULL mutable_clip_op();
  void set_allocated_clip_op(::mojo::spec::ClipOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_clip_op(::mojo::spec::ClipOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ClipOp* PROTOBUF_NULLABLE unsafe_arena_release_clip_op();

  private:
  const ::mojo::spec::ClipOp& _internal_clip_op() const;
  ::mojo::spec::ClipOp* PROTOBUF_NONNULL _internal_mutable_clip_op();

  public:
  // .mojo.spec.KMeansOp kmeans_op = 24;
  bool has_kmeans_op() const;
  private:
  bool _internal_has_kmeans_op() const;

  public:
  void clear_kmeans_op() ;
  const ::mojo::spec::KMeansOp& kmeans_op() const;
  [[nodiscard]] ::mojo::spec::KMeansOp* PROTOBUF_NULLABLE release_kmeans_op();
  ::mojo::spec::KMeansOp* PROTOBUF_NONNULL mutable_kmeans_op();
  void set_allocated_kmeans_op(::mojo::spec::KMeansOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_kmeans_op(::mojo::spec::KMeansOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::KMeansOp* PROTOBUF_NULLABLE unsafe_arena_release_kmeans_op();

  private:
  const ::mojo::spec::KMeansOp& _internal_kmeans_op() const;
  ::mojo::spec::KMeansOp* PROTOBUF_NONNULL _internal_mutable_kmeans_op();

  public:
  // .mojo.spec.MatrixProductOp matrix_product_op = 25;
  bool has_matrix_product_op() const;
  private:
  bool _internal_has_matrix_product_op() const;

  public:
  void clear_matrix_product_op() ;
  const ::mojo::spec::MatrixProductOp& matrix_product_op() const;
  [[nodiscard]] ::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE release_matrix_product_op();
  ::mojo::spec::MatrixProductOp* PROTOBUF_NONNULL mutable_matrix_product_op();
  void set_allocated_matrix_product_op(::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_matrix_product_op(::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE unsafe_arena_release_matrix_product_op();

  private:
  const ::mojo::spec::MatrixProductOp& _internal_matrix_product_op() const;
  ::mojo::spec::MatrixProductOp* PROTOBUF_NONNULL _internal_mutable_matrix_product_op();

  public:
  // .mojo.spec.CountVectorizerOp count_vectorizer_op = 26;
  bool has_count_vectorizer_op() const;
  private:
  bool _internal_has_count_vectorizer_op() const;

  public:
  void clear_count_vectorizer_op() ;
  const ::mojo::spec::CountVectorizerOp& count_vectorizer_op() const;
  [[nodiscard]] ::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE release_count_vectorizer_op();
  ::mojo::spec::CountVectorizerOp* PROTOBUF_NONNULL mutable_count_vectorizer_op();
  void set_allocated_count_vectorizer_op(::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_count_vectorizer_op(::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE unsafe_arena_release_count_vectorizer_op();

  private:
  const ::mojo::spec::CountVectorizerOp& _internal_count_vectorizer_op() const;
  ::mojo::spec::CountVectorizerOp* PROTOBUF_NONNULL _internal_mutable_count_vectorizer_op();

  public:
  // .mojo.spec.ReplaceOp replace_op = 27;
  bool has_replace_op() const;
  private:
  bool _internal_has_replace_op() const;

  public:
  void clear_replace_op() ;
  const ::mojo::spec::ReplaceOp& replace_op() const;
  [[nodiscard]] ::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE release_replace_op();
  ::mojo::spec::ReplaceOp* PROTOBUF_NONNULL mutable_replace_op();
  void set_allocated_replace_op(::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_replace_op(::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE unsafe_arena_release_replace_op();

  private:
  const ::mojo::spec::ReplaceOp& _internal_replace_op() const;
  ::mojo::spec::ReplaceOp* PROTOBUF_NONNULL _internal_mutable_replace_op();

  public:
  // .mojo.spec.IntervalMapOp interval_map_op = 28;
  bool has_interval_map_op() const;
  private:
  bool _internal_has_interval_map_op() const;

  public:
  void clear_interval_map_op() ;
  const ::mojo::spec::IntervalMapOp& interval_map_op() const;
  [[nodiscard]] ::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE release_interval_map_op();
  ::mojo::spec::IntervalMapOp* PROTOBUF_NONNULL mutable_interval_map_op();
  void set_allocated_interval_map_op(::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_interval_map_op(::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE unsafe_arena_release_interval_map_op();

  private:
  const ::mojo::spec::IntervalMapOp& _internal_interval_map_op() const;
  ::mojo::spec::IntervalMapOp* PROTOBUF_NONNULL _internal_mutable_interval_map_op();

  public:
  // .mojo.spec.MapOp map_op = 29;
  bool has_map_op() const;
  private:
  bool _internal_has_map_op() const;

  public:
  void clear_map_op() ;
  const ::mojo::spec::MapOp& map_op() const;
  [[nodiscard]] ::mojo::spec::MapOp* PROTOBUF_NULLABLE release_map_op();
  ::mojo::spec::MapOp* PROTOBUF_NONNULL mutable_map_op();
  void set_allocated_map_op(::mojo::spec::MapOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_map_op(::mojo::spec::MapOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::MapOp* PROTOBUF_NULLABLE unsafe_arena_release_map_op();

  private:
  const ::mojo::spec::MapOp& _internal_map_op() const;
  ::mojo::spec::MapOp* PROTOBUF_NONNULL _internal_mutable_map_op();

  public:
  // .mojo.spec.ExecPipeOp exec_pipe_op = 30;
  bool has_exec_pipe_op() const;
  private:
  bool _internal_has_exec_pipe_op() const;

  public:
  void clear_exec_pipe_op() ;
  const ::mojo::spec::ExecPipeOp& exec_pipe_op() const;
  [[nodiscard]] ::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE release_exec_pipe_op();
  ::mojo::spec::ExecPipeOp* PROTOBUF_NONNULL mutable_exec_pipe_op();
  void set_allocated_exec_pipe_op(::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_exec_pipe_op(::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE unsafe_arena_release_exec_pipe_op();

  private:
  const ::mojo::spec::ExecPipeOp& _internal_exec_pipe_op() const;
  ::mojo::spec::ExecPipeOp* PROTOBUF_NONNULL _internal_mutable_exec_pipe_op();

  public:
  // .mojo.spec.XGBoostOp xgb_op = 31;
  bool has_xgb_op() const;
  private:
  bool _internal_has_xgb_op() const;

  public:
  void clear_xgb_op() ;
  const ::mojo::spec::XGBoostOp& xgb_op() const;
  [[nodiscard]] ::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE release_xgb_op();
  ::mojo::spec::XGBoostOp* PROTOBUF_NONNULL mutable_xgb_op();
  void set_allocated_xgb_op(::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_xgb_op(::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE unsafe_arena_release_xgb_op();

  private:
  const ::mojo::spec::XGBoostOp& _internal_xgb_op() const;
  ::mojo::spec::XGBoostOp* PROTOBUF_NONNULL _internal_mutable_xgb_op();

  public:
  // .mojo.spec.LightGBMOp lgbm_op = 32;
  bool has_lgbm_op() const;
  private:
  bool _internal_has_lgbm_op() const;

  public:
  void clear_lgbm_op() ;
  const ::mojo::spec::LightGBMOp& lgbm_op() const;
  [[nodiscard]] ::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE release_lgbm_op();
  ::mojo::spec::LightGBMOp* PROTOBUF_NONNULL mutable_lgbm_op();
  void set_allocated_lgbm_op(::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_lgbm_op(::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE unsafe_arena_release_lgbm_op();

  private:
  const ::mojo::spec::LightGBMOp& _internal_lgbm_op() const;
  ::mojo::spec::LightGBMOp* PROTOBUF_NONNULL _internal_mutable_lgbm_op();

  public:
  // .mojo.spec.NewColumnOp new_col_op = 33;
  bool has_new_col_op() const;
  private:
  bool _internal_has_new_col_op() const;

  public:
  void clear_new_col_op() ;
  const ::mojo::spec::NewColumnOp& new_col_op() const;
  [[nodiscard]] ::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE release_new_col_op();
  ::mojo::spec::NewColumnOp* PROTOBUF_NONNULL mutable_new_col_op();
  void set_allocated_new_col_op(::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_new_col_op(::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE unsafe_arena_release_new_col_op();

  private:
  const ::mojo::spec::NewColumnOp& _internal_new_col_op() const;
  ::mojo::spec::NewColumnOp* PROTOBUF_NONNULL _internal_mutable_new_col_op();

  public:
  // .mojo.spec.TensorFlowOp tf_op = 34;
  bool has_tf_op() const;
  private:
  bool _internal_has_tf_op() const;

  public:
  void clear_tf_op() ;
  const ::mojo::spec::TensorFlowOp& tf_op() const;
  [[nodiscard]] ::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE release_tf_op();
  ::mojo::spec::TensorFlowOp* PROTOBUF_NONNULL mutable_tf_op();
  void set_allocated_tf_op(::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_tf_op(::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE unsafe_arena_release_tf_op();

  private:
  const ::mojo::spec::TensorFlowOp& _internal_tf_op() const;
  ::mojo::spec::TensorFlowOp* PROTOBUF_NONNULL _internal_mutable_tf_op();

  public:
  // .mojo.spec.KerasTokenizerOp keras_token_op = 35;
  bool has_keras_token_op() const;
  private:
  bool _internal_has_keras_token_op() const;

  public:
  void clear_keras_token_op() ;
  const ::mojo::spec::KerasTokenizerOp& keras_token_op() const;
  [[nodiscard]] ::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE release_keras_token_op();
  ::mojo::spec::KerasTokenizerOp* PROTOBUF_NONNULL mutable_keras_token_op();
  void set_allocated_keras_token_op(::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_keras_token_op(::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE unsafe_arena_release_keras_token_op();

  private:
  const ::mojo::spec::KerasTokenizerOp& _internal_keras_token_op() const;
  ::mojo::spec::KerasTokenizerOp* PROTOBUF_NONNULL _internal_mutable_keras_token_op();

  public:
  // .mojo.spec.FtrlOp ftrl_op = 36;
  bool has_ftrl_op() const;
  private:
  bool _internal_has_ftrl_op() const;

  public:
  void clear_ftrl_op() ;
  const ::mojo::spec::FtrlOp& ftrl_op() const;
  [[nodiscard]] ::mojo::spec::FtrlOp* PROTOBUF_NULLABLE release_ftrl_op();
  ::mojo::spec::FtrlOp* PROTOBUF_NONNULL mutable_ftrl_op();
  void set_allocated_ftrl_op(::mojo::spec::FtrlOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_ftrl_op(::mojo::spec::FtrlOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::FtrlOp* PROTOBUF_NULLABLE unsafe_arena_release_ftrl_op();

  private:
  const ::mojo::spec::FtrlOp& _internal_ftrl_op() const;
  ::mojo::spec::FtrlOp* PROTOBUF_NONNULL _internal_mutable_ftrl_op();

  public:
  // .mojo.spec.PytorchTokenizerOp pytorch_token_op = 37;
  bool has_pytorch_token_op() const;
  private:
  bool _internal_has_pytorch_token_op() const;

  public:
  void clear_pytorch_token_op() ;
  const ::mojo::spec::PytorchTokenizerOp& pytorch_token_op() const;
  [[nodiscard]] ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE release_pytorch_token_op();
  ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NONNULL mutable_pytorch_token_op();
  void set_allocated_pytorch_token_op(::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_pytorch_token_op(::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE unsafe_arena_release_pytorch_token_op();

  private:
  const ::mojo::spec::PytorchTokenizerOp& _internal_pytorch_token_op() const;
  ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NONNULL _internal_mutable_pytorch_token_op();

  public:
  // .mojo.spec.PytorchOp pytorch_op = 38;
  bool has_pytorch_op() const;
  private:
  bool _internal_has_pytorch_op() const;

  public:
  void clear_pytorch_op() ;
  const ::mojo::spec::PytorchOp& pytorch_op() const;
  [[nodiscard]] ::mojo::spec::PytorchOp* PROTOBUF_NULLABLE release_pytorch_op();
  ::mojo::spec::PytorchOp* PROTOBUF_NONNULL mutable_pytorch_op();
  void set_allocated_pytorch_op(::mojo::spec::PytorchOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_pytorch_op(::mojo::spec::PytorchOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::PytorchOp* PROTOBUF_NULLABLE unsafe_arena_release_pytorch_op();

  private:
  const ::mojo::spec::PytorchOp& _internal_pytorch_op() const;
  ::mojo::spec::PytorchOp* PROTOBUF_NONNULL _internal_mutable_pytorch_op();

  public:
  // .mojo.spec.CustomOp custom_op = 39;
  bool has_custom_op() const;
  private:
  bool _internal_has_custom_op() const;

  public:
  void clear_custom_op() ;
  const ::mojo::spec::CustomOp& custom_op() const;
  [[nodiscard]] ::mojo::spec::CustomOp* PROTOBUF_NULLABLE release_custom_op();
  ::mojo::spec::CustomOp* PROTOBUF_NONNULL mutable_custom_op();
  void set_allocated_custom_op(::mojo::spec::CustomOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_custom_op(::mojo::spec::CustomOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::CustomOp* PROTOBUF_NULLABLE unsafe_arena_release_custom_op();

  private:
  const ::mojo::spec::CustomOp& _internal_custom_op() const;
  ::mojo::spec::CustomOp* PROTOBUF_NONNULL _internal_mutable_custom_op();

  public:
  // .mojo.spec.LinearBlenderOp linear_blender_op = 40;
  bool has_linear_blender_op() const;
  private:
  bool _internal_has_linear_blender_op() const;

  public:
  void clear_linear_blender_op() ;
  const ::mojo::spec::LinearBlenderOp& linear_blender_op() const;
  [[nodiscard]] ::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE release_linear_blender_op();
  ::mojo::spec::LinearBlenderOp* PROTOBUF_NONNULL mutable_linear_blender_op();
  void set_allocated_linear_blender_op(::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_linear_blender_op(::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE unsafe_arena_release_linear_blender_op();

  private:
  const ::mojo::spec::LinearBlenderOp& _internal_linear_blender_op() const;
  ::mojo::spec::LinearBlenderOp* PROTOBUF_NONNULL _internal_mutable_linear_blender_op();

  public:
  // .mojo.spec.ImgResizeOp img_resize_op = 41;
  bool has_img_resize_op() const;
  private:
  bool _internal_has_img_resize_op() const;

  public:
  void clear_img_resize_op() ;
  const ::mojo::spec::ImgResizeOp& img_resize_op() const;
  [[nodiscard]] ::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE release_img_resize_op();
  ::mojo::spec::ImgResizeOp* PROTOBUF_NONNULL mutable_img_resize_op();
  void set_allocated_img_resize_op(::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_img_resize_op(::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE unsafe_arena_release_img_resize_op();

  private:
  const ::mojo::spec::ImgResizeOp& _internal_img_resize_op() const;
  ::mojo::spec::ImgResizeOp* PROTOBUF_NONNULL _internal_mutable_img_resize_op();

  public:
  // .mojo.spec.ImageNetPreprocessingOp imagenet_preprocessing_op = 42;
  bool has_imagenet_preprocessing_op() const;
  private:
  bool _internal_has_imagenet_preprocessing_op() const;

  public:
  void clear_imagenet_preprocessing_op() ;
  const ::mojo::spec::ImageNetPreprocessingOp& imagenet_preprocessing_op() const;
  [[nodiscard]] ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE release_imagenet_preprocessing_op();
  ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NONNULL mutable_imagenet_preprocessing_op();
  void set_allocated_imagenet_preprocessing_op(::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_imagenet_preprocessing_op(::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE unsafe_arena_release_imagenet_preprocessing_op();

  private:
  const ::mojo::spec::ImageNetPreprocessingOp& _internal_imagenet_preprocessing_op() const;
  ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NONNULL _internal_mutable_imagenet_preprocessing_op();

  public:
  // .mojo.spec.IdentityOp identity_op = 43;
  bool has_identity_op() const;
  private:
  bool _internal_has_identity_op() const;

  public:
  void clear_identity_op() ;
  const ::mojo::spec::IdentityOp& identity_op() const;
  [[nodiscard]] ::mojo::spec::IdentityOp* PROTOBUF_NULLABLE release_identity_op();
  ::mojo::spec::IdentityOp* PROTOBUF_NONNULL mutable_identity_op();
  void set_allocated_identity_op(::mojo::spec::IdentityOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_identity_op(::mojo::spec::IdentityOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::IdentityOp* PROTOBUF_NULLABLE unsafe_arena_release_identity_op();

  private:
  const ::mojo::spec::IdentityOp& _internal_identity_op() const;
  ::mojo::spec::IdentityOp* PROTOBUF_NONNULL _internal_mutable_identity_op();

  public:
  // .mojo.spec.CatBoostOp catboost_op = 44;
  bool has_catboost_op() const;
  private:
  bool _internal_has_catboost_op() const;

  public:
  void clear_catboost_op() ;
  const ::mojo::spec::CatBoostOp& catboost_op() const;
  [[nodiscard]] ::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE release_catboost_op();
  ::mojo::spec::CatBoostOp* PROTOBUF_NONNULL mutable_catboost_op();
  void set_allocated_catboost_op(::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_catboost_op(::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE unsafe_arena_release_catboost_op();

  private:
  const ::mojo::spec::CatBoostOp& _internal_catboost_op() const;
  ::mojo::spec::CatBoostOp* PROTOBUF_NONNULL _internal_mutable_catboost_op();

  public:
  // .mojo.spec.ImgCenterCropOp img_center_crop_op = 45;
  bool has_img_center_crop_op() const;
  private:
  bool _internal_has_img_center_crop_op() const;

  public:
  void clear_img_center_crop_op() ;
  const ::mojo::spec::ImgCenterCropOp& img_center_crop_op() const;
  [[nodiscard]] ::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE release_img_center_crop_op();
  ::mojo::spec::ImgCenterCropOp* PROTOBUF_NONNULL mutable_img_center_crop_op();
  void set_allocated_img_center_crop_op(::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_img_center_crop_op(::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE unsafe_arena_release_img_center_crop_op();

  private:
  const ::mojo::spec::ImgCenterCropOp& _internal_img_center_crop_op() const;
  ::mojo::spec::ImgCenterCropOp* PROTOBUF_NONNULL _internal_mutable_img_center_crop_op();

  public:
  // .mojo.spec.ImgResizeShorterOp img_resize_shorter_op = 46;
  bool has_img_resize_shorter_op() const;
  private:
  bool _internal_has_img_resize_shorter_op() const;

  public:
  void clear_img_resize_shorter_op() ;
  const ::mojo::spec::ImgResizeShorterOp& img_resize_shorter_op() const;
  [[nodiscard]] ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE release_img_resize_shorter_op();
  ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NONNULL mutable_img_resize_shorter_op();
  void set_allocated_img_resize_shorter_op(::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_img_resize_shorter_op(::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE unsafe_arena_release_img_resize_shorter_op();

  private:
  const ::mojo::spec::ImgResizeShorterOp& _internal_img_resize_shorter_op() const;
  ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NONNULL _internal_mutable_img_resize_shorter_op();

  public:
  void clear_Type();
  TypeCase Type_case() const;
  // @@protoc_insertion_point(class_scope:mojo.spec.Transformation)
 private:
  class _Internal;
  void set_has_const_binary_op();
  void set_has_binary_op();
  void set_has_as_type_op();
  void set_has_exp_op();
  void set_has_expm1_op();
  void set_has_scale_op();
  void set_has_sigmoid_op();
  void set_has_power_op();
  void set_has_log_op();
  void set_has_sqrt_op();
  void set_has_softmax_op();
  void set_has_agg_op();
  void set_has_median_op();
  void set_has_datepart_op();
  void set_has_moment_op();
  void set_has_normalize_op();
  void set_has_is_na_op();
  void set_has_fill_na_op();
  void set_has_impute_na_op();
  void set_has_clip_op();
  void set_has_kmeans_op();
  void set_has_matrix_product_op();
  void set_has_count_vectorizer_op();
  void set_has_replace_op();
  void set_has_interval_map_op();
  void set_has_map_op();
  void set_has_exec_pipe_op();
  void set_has_xgb_op();
  void set_has_lgbm_op();
  void set_has_new_col_op();
  void set_has_tf_op();
  void set_has_keras_token_op();
  void set_has_ftrl_op();
  void set_has_pytorch_token_op();
  void set_has_pytorch_op();
  void set_has_custom_op();
  void set_has_linear_blender_op();
  void set_has_img_resize_op();
  void set_has_imagenet_preprocessing_op();
  void set_has_identity_op();
  void set_has_catboost_op();
  void set_has_img_center_crop_op();
  void set_has_img_resize_shorter_op();
  inline bool has_Type() const;
  inline void clear_has_Type();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<2, 46,
                                   43, 86,
                                   7>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Transformation& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> inputs_;
    ::google::protobuf::RepeatedPtrField<::std::string> outputs_;
    ::int32_t group_id_;
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE const_binary_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE binary_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE as_type_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE exp_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE expm1_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE scale_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE sigmoid_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE power_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE log_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE sqrt_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE softmax_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE agg_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE median_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE datepart_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE moment_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE normalize_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE is_na_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE fill_na_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE impute_na_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE clip_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE kmeans_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE matrix_product_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE count_vectorizer_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE replace_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE interval_map_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE map_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE exec_pipe_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE xgb_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE lgbm_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE new_col_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE tf_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE keras_token_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE ftrl_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE pytorch_token_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE pytorch_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE custom_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE linear_blender_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE img_resize_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE imagenet_preprocessing_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE identity_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE catboost_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE img_center_crop_op_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE img_resize_shorter_op_;
    } Type_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Transformation_class_data_;
// -------------------------------------------------------------------

class Pipeline final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.Pipeline) */ {
 public:
  inline Pipeline() : Pipeline(nullptr) {}
  ~Pipeline() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Pipeline* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Pipeline));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Pipeline(::google::protobuf::internal::ConstantInitialized);

  inline Pipeline(const Pipeline& from) : Pipeline(nullptr, from) {}
  inline Pipeline(Pipeline&& from) noexcept
      : Pipeline(nullptr, ::std::move(from)) {}
  inline Pipeline& operator=(const Pipeline& from) {
    CopyFrom(from);
    return *this;
  }
  inline Pipeline& operator=(Pipeline&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Pipeline& default_instance() {
    return *reinterpret_cast<const Pipeline*>(
        &_Pipeline_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Pipeline& a, Pipeline& b) { a.Swap(&b); }
  inline void Swap(Pipeline* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Pipeline* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Pipeline* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Pipeline>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Pipeline& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Pipeline& from) { Pipeline::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Pipeline* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Pipeline"; }

  explicit Pipeline(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Pipeline(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Pipeline& from);
  Pipeline(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Pipeline&& from) noexcept
      : Pipeline(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMissingValuesFieldNumber = 5,
    kTransformationsFieldNumber = 9,
    kTransformationGroupsFieldNumber = 12,
    kOrigMatrixFieldNumber = 16,
    kUuidFieldNumber = 2,
    kExperimentIdFieldNumber = 3,
    kDaiVersionFieldNumber = 13,
    kExperimentNameFieldNumber = 18,
    kTimeCreatedFieldNumber = 4,
    kFeaturesFieldNumber = 6,
    kOutputsFieldNumber = 7,
    kInterimsFieldNumber = 8,
    kTransformedFieldNumber = 14,
    kLicenseFieldNumber = 15,
    kProblemFieldNumber = 17,
    kMojoVersionFieldNumber = 1,
    kIdlVersionFieldNumber = 10,
    kFormatStringFieldNumber = 11,
  };
  // repeated string missing_values = 5;
  int missing_values_size() const;
  private:
  int _internal_missing_values_size() const;

  public:
  void clear_missing_values() ;
  const ::std::string& missing_values(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_missing_values(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_missing_values(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_missing_values();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_missing_values(Arg_&& value, Args_... args);
  const ::google::protobuf::RepeatedPtrField<::std::string>& missing_values() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL mutable_missing_values();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_missing_values() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_missing_values();

  public:
  // repeated .mojo.spec.Transformation transformations = 9;
  int transformations_size() const;
  private:
  int _internal_transformations_size() const;

  public:
  void clear_transformations() ;
  ::mojo::spec::Transformation* PROTOBUF_NONNULL mutable_transformations(int index);
  ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>* PROTOBUF_NONNULL mutable_transformations();

  private:
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>& _internal_transformations() const;
  ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>* PROTOBUF_NONNULL _internal_mutable_transformations();
  public:
  const ::mojo::spec::Transformation& transformations(int index) const;
  ::mojo::spec::Transformation* PROTOBUF_NONNULL add_transformations();
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>& transformations() const;
  // repeated .mojo.spec.TransformationGroup transformation_groups = 12;
  int transformation_groups_size() const;
  private:
  int _internal_transformation_groups_size() const;

  public:
  void clear_transformation_groups() ;
  ::mojo::spec::TransformationGroup* PROTOBUF_NONNULL mutable_transformation_groups(int index);
  ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>* PROTOBUF_NONNULL mutable_transformation_groups();

  private:
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>& _internal_transformation_groups() const;
  ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>* PROTOBUF_NONNULL _internal_mutable_transformation_groups();
  public:
  const ::mojo::spec::TransformationGroup& transformation_groups(int index) const;
  ::mojo::spec::TransformationGroup* PROTOBUF_NONNULL add_transformation_groups();
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>& transformation_groups() const;
  // repeated .mojo.spec.OrigMatrixSparseRow orig_matrix = 16;
  int orig_matrix_size() const;
  private:
  int _internal_orig_matrix_size() const;

  public:
  void clear_orig_matrix() ;
  ::mojo::spec::OrigMatrixSparseRow* PROTOBUF_NONNULL mutable_orig_matrix(int index);
  ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>* PROTOBUF_NONNULL mutable_orig_matrix();

  private:
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>& _internal_orig_matrix() const;
  ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>* PROTOBUF_NONNULL _internal_mutable_orig_matrix();
  public:
  const ::mojo::spec::OrigMatrixSparseRow& orig_matrix(int index) const;
  ::mojo::spec::OrigMatrixSparseRow* PROTOBUF_NONNULL add_orig_matrix();
  const ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>& orig_matrix() const;
  // string uuid = 2;
  void clear_uuid() ;
  const ::std::string& uuid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_uuid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_uuid();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_uuid();
  void set_allocated_uuid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_uuid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_uuid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_uuid();

  public:
  // string experiment_id = 3;
  void clear_experiment_id() ;
  const ::std::string& experiment_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_experiment_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_experiment_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_experiment_id();
  void set_allocated_experiment_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_experiment_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_experiment_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_experiment_id();

  public:
  // string dai_version = 13;
  void clear_dai_version() ;
  const ::std::string& dai_version() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_dai_version(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_dai_version();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_dai_version();
  void set_allocated_dai_version(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_dai_version() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_dai_version(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_dai_version();

  public:
  // string experiment_name = 18;
  void clear_experiment_name() ;
  const ::std::string& experiment_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_experiment_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_experiment_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_experiment_name();
  void set_allocated_experiment_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_experiment_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_experiment_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_experiment_name();

  public:
  // .google.protobuf.Timestamp time_created = 4;
  bool has_time_created() const;
  void clear_time_created() ;
  const ::google::protobuf::Timestamp& time_created() const;
  [[nodiscard]] ::google::protobuf::Timestamp* PROTOBUF_NULLABLE release_time_created();
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL mutable_time_created();
  void set_allocated_time_created(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_time_created(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value);
  ::google::protobuf::Timestamp* PROTOBUF_NULLABLE unsafe_arena_release_time_created();

  private:
  const ::google::protobuf::Timestamp& _internal_time_created() const;
  ::google::protobuf::Timestamp* PROTOBUF_NONNULL _internal_mutable_time_created();

  public:
  // .mojo.spec.Frame features = 6;
  bool has_features() const;
  void clear_features() ;
  const ::mojo::spec::Frame& features() const;
  [[nodiscard]] ::mojo::spec::Frame* PROTOBUF_NULLABLE release_features();
  ::mojo::spec::Frame* PROTOBUF_NONNULL mutable_features();
  void set_allocated_features(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_features(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  ::mojo::spec::Frame* PROTOBUF_NULLABLE unsafe_arena_release_features();

  private:
  const ::mojo::spec::Frame& _internal_features() const;
  ::mojo::spec::Frame* PROTOBUF_NONNULL _internal_mutable_features();

  public:
  // .mojo.spec.Frame outputs = 7;
  bool has_outputs() const;
  void clear_outputs() ;
  const ::mojo::spec::Frame& outputs() const;
  [[nodiscard]] ::mojo::spec::Frame* PROTOBUF_NULLABLE release_outputs();
  ::mojo::spec::Frame* PROTOBUF_NONNULL mutable_outputs();
  void set_allocated_outputs(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_outputs(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  ::mojo::spec::Frame* PROTOBUF_NULLABLE unsafe_arena_release_outputs();

  private:
  const ::mojo::spec::Frame& _internal_outputs() const;
  ::mojo::spec::Frame* PROTOBUF_NONNULL _internal_mutable_outputs();

  public:
  // .mojo.spec.Frame interims = 8;
  bool has_interims() const;
  void clear_interims() ;
  const ::mojo::spec::Frame& interims() const;
  [[nodiscard]] ::mojo::spec::Frame* PROTOBUF_NULLABLE release_interims();
  ::mojo::spec::Frame* PROTOBUF_NONNULL mutable_interims();
  void set_allocated_interims(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_interims(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  ::mojo::spec::Frame* PROTOBUF_NULLABLE unsafe_arena_release_interims();

  private:
  const ::mojo::spec::Frame& _internal_interims() const;
  ::mojo::spec::Frame* PROTOBUF_NONNULL _internal_mutable_interims();

  public:
  // .mojo.spec.Frame transformed = 14;
  bool has_transformed() const;
  void clear_transformed() ;
  const ::mojo::spec::Frame& transformed() const;
  [[nodiscard]] ::mojo::spec::Frame* PROTOBUF_NULLABLE release_transformed();
  ::mojo::spec::Frame* PROTOBUF_NONNULL mutable_transformed();
  void set_allocated_transformed(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_transformed(::mojo::spec::Frame* PROTOBUF_NULLABLE value);
  ::mojo::spec::Frame* PROTOBUF_NULLABLE unsafe_arena_release_transformed();

  private:
  const ::mojo::spec::Frame& _internal_transformed() const;
  ::mojo::spec::Frame* PROTOBUF_NONNULL _internal_mutable_transformed();

  public:
  // .mojo.spec.License license = 15;
  bool has_license() const;
  void clear_license() ;
  const ::mojo::spec::License& license() const;
  [[nodiscard]] ::mojo::spec::License* PROTOBUF_NULLABLE release_license();
  ::mojo::spec::License* PROTOBUF_NONNULL mutable_license();
  void set_allocated_license(::mojo::spec::License* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_license(::mojo::spec::License* PROTOBUF_NULLABLE value);
  ::mojo::spec::License* PROTOBUF_NULLABLE unsafe_arena_release_license();

  private:
  const ::mojo::spec::License& _internal_license() const;
  ::mojo::spec::License* PROTOBUF_NONNULL _internal_mutable_license();

  public:
  // .mojo.spec.Problem problem = 17;
  bool has_problem() const;
  void clear_problem() ;
  const ::mojo::spec::Problem& problem() const;
  [[nodiscard]] ::mojo::spec::Problem* PROTOBUF_NULLABLE release_problem();
  ::mojo::spec::Problem* PROTOBUF_NONNULL mutable_problem();
  void set_allocated_problem(::mojo::spec::Problem* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_problem(::mojo::spec::Problem* PROTOBUF_NULLABLE value);
  ::mojo::spec::Problem* PROTOBUF_NULLABLE unsafe_arena_release_problem();

  private:
  const ::mojo::spec::Problem& _internal_problem() const;
  ::mojo::spec::Problem* PROTOBUF_NONNULL _internal_mutable_problem();

  public:
  // int32 mojo_version = 1;
  void clear_mojo_version() ;
  ::int32_t mojo_version() const;
  void set_mojo_version(::int32_t value);

  private:
  ::int32_t _internal_mojo_version() const;
  void _internal_set_mojo_version(::int32_t value);

  public:
  // int32 idl_version = 10;
  void clear_idl_version() ;
  ::int32_t idl_version() const;
  void set_idl_version(::int32_t value);

  private:
  ::int32_t _internal_idl_version() const;
  void _internal_set_idl_version(::int32_t value);

  public:
  // map<string, string> format_string = 11 [deprecated = true];
  [[deprecated]]  int format_string_size() const;
  private:
  int _internal_format_string_size() const;

  public:
  [[deprecated]]  void clear_format_string() ;
  [[deprecated]] const ::google::protobuf::Map<::std::string, ::std::string>& format_string() const;
  [[deprecated]] ::google::protobuf::Map<::std::string, ::std::string>* PROTOBUF_NONNULL mutable_format_string();

  private:
  const ::google::protobuf::Map<::std::string, ::std::string>& _internal_format_string() const;
  ::google::protobuf::Map<::std::string, ::std::string>* PROTOBUF_NONNULL _internal_mutable_format_string();

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.Pipeline)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<5, 18,
                                   11, 113,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Pipeline& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> missing_values_;
    ::google::protobuf::RepeatedPtrField< ::mojo::spec::Transformation > transformations_;
    ::google::protobuf::RepeatedPtrField< ::mojo::spec::TransformationGroup > transformation_groups_;
    ::google::protobuf::RepeatedPtrField< ::mojo::spec::OrigMatrixSparseRow > orig_matrix_;
    ::google::protobuf::internal::ArenaStringPtr uuid_;
    ::google::protobuf::internal::ArenaStringPtr experiment_id_;
    ::google::protobuf::internal::ArenaStringPtr dai_version_;
    ::google::protobuf::internal::ArenaStringPtr experiment_name_;
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE time_created_;
    ::mojo::spec::Frame* PROTOBUF_NULLABLE features_;
    ::mojo::spec::Frame* PROTOBUF_NULLABLE outputs_;
    ::mojo::spec::Frame* PROTOBUF_NULLABLE interims_;
    ::mojo::spec::Frame* PROTOBUF_NULLABLE transformed_;
    ::mojo::spec::License* PROTOBUF_NULLABLE license_;
    ::mojo::spec::Problem* PROTOBUF_NULLABLE problem_;
    ::int32_t mojo_version_;
    ::int32_t idl_version_;
    ::google::protobuf::internal::MapField<Pipeline_FormatStringEntry_DoNotUse, ::std::string, ::std::string,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING,
                      ::google::protobuf::internal::WireFormatLite::TYPE_STRING>
        format_string_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Pipeline_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Pipeline_class_data_;

// ===================================================================




// ===================================================================


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// Pipeline

// int32 mojo_version = 1;
inline void Pipeline::clear_mojo_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mojo_version_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00008000U);
}
inline ::int32_t Pipeline::mojo_version() const {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.mojo_version)
  return _internal_mojo_version();
}
inline void Pipeline::set_mojo_version(::int32_t value) {
  _internal_set_mojo_version(value);
  SetHasBit(_impl_._has_bits_[0], 0x00008000U);
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.mojo_version)
}
inline ::int32_t Pipeline::_internal_mojo_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mojo_version_;
}
inline void Pipeline::_internal_set_mojo_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mojo_version_ = value;
}

// string uuid = 2;
inline void Pipeline::clear_uuid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uuid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000010U);
}
inline const ::std::string& Pipeline::uuid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.uuid)
  return _internal_uuid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Pipeline::set_uuid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.uuid_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.uuid)
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::mutable_uuid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_uuid();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.uuid)
  return _s;
}
inline const ::std::string& Pipeline::_internal_uuid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.uuid_.Get();
}
inline void Pipeline::_internal_set_uuid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uuid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::_internal_mutable_uuid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.uuid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Pipeline::release_uuid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.uuid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.uuid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.uuid_.Set("", GetArena());
  }
  return released;
}
inline void Pipeline::set_allocated_uuid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.uuid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.uuid_.IsDefault()) {
    _impl_.uuid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.uuid)
}

// string experiment_id = 3;
inline void Pipeline::clear_experiment_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.experiment_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000020U);
}
inline const ::std::string& Pipeline::experiment_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.experiment_id)
  return _internal_experiment_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Pipeline::set_experiment_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  _impl_.experiment_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.experiment_id)
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::mutable_experiment_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::std::string* _s = _internal_mutable_experiment_id();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.experiment_id)
  return _s;
}
inline const ::std::string& Pipeline::_internal_experiment_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.experiment_id_.Get();
}
inline void Pipeline::_internal_set_experiment_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.experiment_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::_internal_mutable_experiment_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.experiment_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Pipeline::release_experiment_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.experiment_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000020U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  auto* released = _impl_.experiment_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.experiment_id_.Set("", GetArena());
  }
  return released;
}
inline void Pipeline::set_allocated_experiment_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  _impl_.experiment_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.experiment_id_.IsDefault()) {
    _impl_.experiment_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.experiment_id)
}

// .google.protobuf.Timestamp time_created = 4;
inline bool Pipeline::has_time_created() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000100U);
  PROTOBUF_ASSUME(!value || _impl_.time_created_ != nullptr);
  return value;
}
inline const ::google::protobuf::Timestamp& Pipeline::_internal_time_created() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Timestamp* p = _impl_.time_created_;
  return p != nullptr ? *p : reinterpret_cast<const ::google::protobuf::Timestamp&>(::google::protobuf::_Timestamp_default_instance_);
}
inline const ::google::protobuf::Timestamp& Pipeline::time_created() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.time_created)
  return _internal_time_created();
}
inline void Pipeline::unsafe_arena_set_allocated_time_created(
    ::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.time_created_);
  }
  _impl_.time_created_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.time_created)
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE Pipeline::release_time_created() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::google::protobuf::Timestamp* released = _impl_.time_created_;
  _impl_.time_created_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_time_created() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.time_created)

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::google::protobuf::Timestamp* temp = _impl_.time_created_;
  _impl_.time_created_ = nullptr;
  return temp;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL Pipeline::_internal_mutable_time_created() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.time_created_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Timestamp>(GetArena());
    _impl_.time_created_ = reinterpret_cast<::google::protobuf::Timestamp*>(p);
  }
  return _impl_.time_created_;
}
inline ::google::protobuf::Timestamp* PROTOBUF_NONNULL Pipeline::mutable_time_created()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::google::protobuf::Timestamp* _msg = _internal_mutable_time_created();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.time_created)
  return _msg;
}
inline void Pipeline::set_allocated_time_created(::google::protobuf::Timestamp* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.time_created_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }

  _impl_.time_created_ = reinterpret_cast<::google::protobuf::Timestamp*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.time_created)
}

// repeated string missing_values = 5;
inline int Pipeline::_internal_missing_values_size() const {
  return _internal_missing_values().size();
}
inline int Pipeline::missing_values_size() const {
  return _internal_missing_values_size();
}
inline void Pipeline::clear_missing_values() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.missing_values_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::add_missing_values()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_missing_values()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.Pipeline.missing_values)
  return _s;
}
inline const ::std::string& Pipeline::missing_values(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.missing_values)
  return _internal_missing_values().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::mutable_missing_values(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.missing_values)
  return _internal_mutable_missing_values()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void Pipeline::set_missing_values(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_missing_values()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.missing_values)
}
template <typename Arg_, typename... Args_>
inline void Pipeline::add_missing_values(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_missing_values(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.Pipeline.missing_values)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& Pipeline::missing_values()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Pipeline.missing_values)
  return _internal_missing_values();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Pipeline::mutable_missing_values() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Pipeline.missing_values)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_missing_values();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
Pipeline::_internal_missing_values() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.missing_values_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Pipeline::_internal_mutable_missing_values() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.missing_values_;
}

// .mojo.spec.Frame features = 6;
inline bool Pipeline::has_features() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000200U);
  PROTOBUF_ASSUME(!value || _impl_.features_ != nullptr);
  return value;
}
inline void Pipeline::clear_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.features_ != nullptr) _impl_.features_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000200U);
}
inline const ::mojo::spec::Frame& Pipeline::_internal_features() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::Frame* p = _impl_.features_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::Frame&>(::mojo::spec::_Frame_default_instance_);
}
inline const ::mojo::spec::Frame& Pipeline::features() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.features)
  return _internal_features();
}
inline void Pipeline::unsafe_arena_set_allocated_features(
    ::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.features_);
  }
  _impl_.features_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.features)
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::release_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  ::mojo::spec::Frame* released = _impl_.features_;
  _impl_.features_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.features)

  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  ::mojo::spec::Frame* temp = _impl_.features_;
  _impl_.features_ = nullptr;
  return temp;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::_internal_mutable_features() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.features_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Frame>(GetArena());
    _impl_.features_ = reinterpret_cast<::mojo::spec::Frame*>(p);
  }
  return _impl_.features_;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::mutable_features()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  ::mojo::spec::Frame* _msg = _internal_mutable_features();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.features)
  return _msg;
}
inline void Pipeline::set_allocated_features(::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.features_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
  }

  _impl_.features_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.features)
}

// .mojo.spec.Frame outputs = 7;
inline bool Pipeline::has_outputs() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000400U);
  PROTOBUF_ASSUME(!value || _impl_.outputs_ != nullptr);
  return value;
}
inline void Pipeline::clear_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.outputs_ != nullptr) _impl_.outputs_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000400U);
}
inline const ::mojo::spec::Frame& Pipeline::_internal_outputs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::Frame* p = _impl_.outputs_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::Frame&>(::mojo::spec::_Frame_default_instance_);
}
inline const ::mojo::spec::Frame& Pipeline::outputs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.outputs)
  return _internal_outputs();
}
inline void Pipeline::unsafe_arena_set_allocated_outputs(
    ::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outputs_);
  }
  _impl_.outputs_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.outputs)
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::release_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  ::mojo::spec::Frame* released = _impl_.outputs_;
  _impl_.outputs_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.outputs)

  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  ::mojo::spec::Frame* temp = _impl_.outputs_;
  _impl_.outputs_ = nullptr;
  return temp;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::_internal_mutable_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.outputs_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Frame>(GetArena());
    _impl_.outputs_ = reinterpret_cast<::mojo::spec::Frame*>(p);
  }
  return _impl_.outputs_;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::mutable_outputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  ::mojo::spec::Frame* _msg = _internal_mutable_outputs();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.outputs)
  return _msg;
}
inline void Pipeline::set_allocated_outputs(::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.outputs_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
  }

  _impl_.outputs_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.outputs)
}

// .mojo.spec.Frame interims = 8;
inline bool Pipeline::has_interims() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000800U);
  PROTOBUF_ASSUME(!value || _impl_.interims_ != nullptr);
  return value;
}
inline void Pipeline::clear_interims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.interims_ != nullptr) _impl_.interims_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000800U);
}
inline const ::mojo::spec::Frame& Pipeline::_internal_interims() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::Frame* p = _impl_.interims_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::Frame&>(::mojo::spec::_Frame_default_instance_);
}
inline const ::mojo::spec::Frame& Pipeline::interims() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.interims)
  return _internal_interims();
}
inline void Pipeline::unsafe_arena_set_allocated_interims(
    ::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.interims_);
  }
  _impl_.interims_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.interims)
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::release_interims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  ::mojo::spec::Frame* released = _impl_.interims_;
  _impl_.interims_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_interims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.interims)

  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  ::mojo::spec::Frame* temp = _impl_.interims_;
  _impl_.interims_ = nullptr;
  return temp;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::_internal_mutable_interims() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.interims_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Frame>(GetArena());
    _impl_.interims_ = reinterpret_cast<::mojo::spec::Frame*>(p);
  }
  return _impl_.interims_;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::mutable_interims()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  ::mojo::spec::Frame* _msg = _internal_mutable_interims();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.interims)
  return _msg;
}
inline void Pipeline::set_allocated_interims(::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.interims_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
  }

  _impl_.interims_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.interims)
}

// repeated .mojo.spec.Transformation transformations = 9;
inline int Pipeline::_internal_transformations_size() const {
  return _internal_transformations().size();
}
inline int Pipeline::transformations_size() const {
  return _internal_transformations_size();
}
inline void Pipeline::clear_transformations() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transformations_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::mojo::spec::Transformation* PROTOBUF_NONNULL Pipeline::mutable_transformations(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.transformations)
  return _internal_mutable_transformations()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>* PROTOBUF_NONNULL Pipeline::mutable_transformations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Pipeline.transformations)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_transformations();
}
inline const ::mojo::spec::Transformation& Pipeline::transformations(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.transformations)
  return _internal_transformations().Get(index);
}
inline ::mojo::spec::Transformation* PROTOBUF_NONNULL Pipeline::add_transformations()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::mojo::spec::Transformation* _add =
      _internal_mutable_transformations()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:mojo.spec.Pipeline.transformations)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>& Pipeline::transformations() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Pipeline.transformations)
  return _internal_transformations();
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>&
Pipeline::_internal_transformations() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transformations_;
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::Transformation>* PROTOBUF_NONNULL
Pipeline::_internal_mutable_transformations() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.transformations_;
}

// int32 idl_version = 10;
inline void Pipeline::clear_idl_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.idl_version_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00010000U);
}
inline ::int32_t Pipeline::idl_version() const {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.idl_version)
  return _internal_idl_version();
}
inline void Pipeline::set_idl_version(::int32_t value) {
  _internal_set_idl_version(value);
  SetHasBit(_impl_._has_bits_[0], 0x00010000U);
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.idl_version)
}
inline ::int32_t Pipeline::_internal_idl_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.idl_version_;
}
inline void Pipeline::_internal_set_idl_version(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.idl_version_ = value;
}

// map<string, string> format_string = 11 [deprecated = true];
inline int Pipeline::_internal_format_string_size() const {
  return _internal_format_string().size();
}
inline int Pipeline::format_string_size() const {
  return _internal_format_string_size();
}
inline void Pipeline::clear_format_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.format_string_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00020000U);
}
inline const ::google::protobuf::Map<::std::string, ::std::string>& Pipeline::_internal_format_string() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.format_string_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::std::string>& Pipeline::format_string() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:mojo.spec.Pipeline.format_string)
  return _internal_format_string();
}
inline ::google::protobuf::Map<::std::string, ::std::string>* PROTOBUF_NONNULL Pipeline::_internal_mutable_format_string() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.format_string_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::std::string>* PROTOBUF_NONNULL Pipeline::mutable_format_string()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00020000U);
  // @@protoc_insertion_point(field_mutable_map:mojo.spec.Pipeline.format_string)
  return _internal_mutable_format_string();
}

// repeated .mojo.spec.TransformationGroup transformation_groups = 12;
inline int Pipeline::_internal_transformation_groups_size() const {
  return _internal_transformation_groups().size();
}
inline int Pipeline::transformation_groups_size() const {
  return _internal_transformation_groups_size();
}
inline ::mojo::spec::TransformationGroup* PROTOBUF_NONNULL Pipeline::mutable_transformation_groups(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.transformation_groups)
  return _internal_mutable_transformation_groups()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>* PROTOBUF_NONNULL Pipeline::mutable_transformation_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Pipeline.transformation_groups)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_transformation_groups();
}
inline const ::mojo::spec::TransformationGroup& Pipeline::transformation_groups(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.transformation_groups)
  return _internal_transformation_groups().Get(index);
}
inline ::mojo::spec::TransformationGroup* PROTOBUF_NONNULL Pipeline::add_transformation_groups()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::mojo::spec::TransformationGroup* _add =
      _internal_mutable_transformation_groups()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:mojo.spec.Pipeline.transformation_groups)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>& Pipeline::transformation_groups() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Pipeline.transformation_groups)
  return _internal_transformation_groups();
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>&
Pipeline::_internal_transformation_groups() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transformation_groups_;
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::TransformationGroup>* PROTOBUF_NONNULL
Pipeline::_internal_mutable_transformation_groups() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.transformation_groups_;
}

// string dai_version = 13;
inline void Pipeline::clear_dai_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dai_version_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000040U);
}
inline const ::std::string& Pipeline::dai_version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.dai_version)
  return _internal_dai_version();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Pipeline::set_dai_version(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  _impl_.dai_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.dai_version)
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::mutable_dai_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::std::string* _s = _internal_mutable_dai_version();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.dai_version)
  return _s;
}
inline const ::std::string& Pipeline::_internal_dai_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dai_version_.Get();
}
inline void Pipeline::_internal_set_dai_version(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dai_version_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::_internal_mutable_dai_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.dai_version_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Pipeline::release_dai_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.dai_version)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000040U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  auto* released = _impl_.dai_version_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.dai_version_.Set("", GetArena());
  }
  return released;
}
inline void Pipeline::set_allocated_dai_version(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  _impl_.dai_version_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.dai_version_.IsDefault()) {
    _impl_.dai_version_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.dai_version)
}

// .mojo.spec.Frame transformed = 14;
inline bool Pipeline::has_transformed() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00001000U);
  PROTOBUF_ASSUME(!value || _impl_.transformed_ != nullptr);
  return value;
}
inline void Pipeline::clear_transformed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.transformed_ != nullptr) _impl_.transformed_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00001000U);
}
inline const ::mojo::spec::Frame& Pipeline::_internal_transformed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::Frame* p = _impl_.transformed_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::Frame&>(::mojo::spec::_Frame_default_instance_);
}
inline const ::mojo::spec::Frame& Pipeline::transformed() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.transformed)
  return _internal_transformed();
}
inline void Pipeline::unsafe_arena_set_allocated_transformed(
    ::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transformed_);
  }
  _impl_.transformed_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.transformed)
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::release_transformed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  ::mojo::spec::Frame* released = _impl_.transformed_;
  _impl_.transformed_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::Frame* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_transformed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.transformed)

  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  ::mojo::spec::Frame* temp = _impl_.transformed_;
  _impl_.transformed_ = nullptr;
  return temp;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::_internal_mutable_transformed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.transformed_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Frame>(GetArena());
    _impl_.transformed_ = reinterpret_cast<::mojo::spec::Frame*>(p);
  }
  return _impl_.transformed_;
}
inline ::mojo::spec::Frame* PROTOBUF_NONNULL Pipeline::mutable_transformed()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  ::mojo::spec::Frame* _msg = _internal_mutable_transformed();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.transformed)
  return _msg;
}
inline void Pipeline::set_allocated_transformed(::mojo::spec::Frame* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.transformed_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
  }

  _impl_.transformed_ = reinterpret_cast<::mojo::spec::Frame*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.transformed)
}

// .mojo.spec.License license = 15;
inline bool Pipeline::has_license() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00002000U);
  PROTOBUF_ASSUME(!value || _impl_.license_ != nullptr);
  return value;
}
inline void Pipeline::clear_license() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.license_ != nullptr) _impl_.license_->Clear();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00002000U);
}
inline const ::mojo::spec::License& Pipeline::_internal_license() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::License* p = _impl_.license_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::License&>(::mojo::spec::_License_default_instance_);
}
inline const ::mojo::spec::License& Pipeline::license() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.license)
  return _internal_license();
}
inline void Pipeline::unsafe_arena_set_allocated_license(
    ::mojo::spec::License* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.license_);
  }
  _impl_.license_ = reinterpret_cast<::mojo::spec::License*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.license)
}
inline ::mojo::spec::License* PROTOBUF_NULLABLE Pipeline::release_license() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  ::mojo::spec::License* released = _impl_.license_;
  _impl_.license_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::License* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_license() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.license)

  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  ::mojo::spec::License* temp = _impl_.license_;
  _impl_.license_ = nullptr;
  return temp;
}
inline ::mojo::spec::License* PROTOBUF_NONNULL Pipeline::_internal_mutable_license() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.license_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::License>(GetArena());
    _impl_.license_ = reinterpret_cast<::mojo::spec::License*>(p);
  }
  return _impl_.license_;
}
inline ::mojo::spec::License* PROTOBUF_NONNULL Pipeline::mutable_license()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  ::mojo::spec::License* _msg = _internal_mutable_license();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.license)
  return _msg;
}
inline void Pipeline::set_allocated_license(::mojo::spec::License* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.license_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
  }

  _impl_.license_ = reinterpret_cast<::mojo::spec::License*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.license)
}

// repeated .mojo.spec.OrigMatrixSparseRow orig_matrix = 16;
inline int Pipeline::_internal_orig_matrix_size() const {
  return _internal_orig_matrix().size();
}
inline int Pipeline::orig_matrix_size() const {
  return _internal_orig_matrix_size();
}
inline void Pipeline::clear_orig_matrix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.orig_matrix_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000008U);
}
inline ::mojo::spec::OrigMatrixSparseRow* PROTOBUF_NONNULL Pipeline::mutable_orig_matrix(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.orig_matrix)
  return _internal_mutable_orig_matrix()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>* PROTOBUF_NONNULL Pipeline::mutable_orig_matrix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Pipeline.orig_matrix)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_orig_matrix();
}
inline const ::mojo::spec::OrigMatrixSparseRow& Pipeline::orig_matrix(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.orig_matrix)
  return _internal_orig_matrix().Get(index);
}
inline ::mojo::spec::OrigMatrixSparseRow* PROTOBUF_NONNULL Pipeline::add_orig_matrix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::mojo::spec::OrigMatrixSparseRow* _add =
      _internal_mutable_orig_matrix()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:mojo.spec.Pipeline.orig_matrix)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>& Pipeline::orig_matrix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Pipeline.orig_matrix)
  return _internal_orig_matrix();
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>&
Pipeline::_internal_orig_matrix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.orig_matrix_;
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::OrigMatrixSparseRow>* PROTOBUF_NONNULL
Pipeline::_internal_mutable_orig_matrix() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.orig_matrix_;
}

// .mojo.spec.Problem problem = 17;
inline bool Pipeline::has_problem() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00004000U);
  PROTOBUF_ASSUME(!value || _impl_.problem_ != nullptr);
  return value;
}
inline const ::mojo::spec::Problem& Pipeline::_internal_problem() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::mojo::spec::Problem* p = _impl_.problem_;
  return p != nullptr ? *p : reinterpret_cast<const ::mojo::spec::Problem&>(::mojo::spec::_Problem_default_instance_);
}
inline const ::mojo::spec::Problem& Pipeline::problem() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.problem)
  return _internal_problem();
}
inline void Pipeline::unsafe_arena_set_allocated_problem(
    ::mojo::spec::Problem* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.problem_);
  }
  _impl_.problem_ = reinterpret_cast<::mojo::spec::Problem*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Pipeline.problem)
}
inline ::mojo::spec::Problem* PROTOBUF_NULLABLE Pipeline::release_problem() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::mojo::spec::Problem* released = _impl_.problem_;
  _impl_.problem_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::mojo::spec::Problem* PROTOBUF_NULLABLE Pipeline::unsafe_arena_release_problem() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.problem)

  ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::mojo::spec::Problem* temp = _impl_.problem_;
  _impl_.problem_ = nullptr;
  return temp;
}
inline ::mojo::spec::Problem* PROTOBUF_NONNULL Pipeline::_internal_mutable_problem() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.problem_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Problem>(GetArena());
    _impl_.problem_ = reinterpret_cast<::mojo::spec::Problem*>(p);
  }
  return _impl_.problem_;
}
inline ::mojo::spec::Problem* PROTOBUF_NONNULL Pipeline::mutable_problem()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  ::mojo::spec::Problem* _msg = _internal_mutable_problem();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.problem)
  return _msg;
}
inline void Pipeline::set_allocated_problem(::mojo::spec::Problem* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.problem_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00004000U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00004000U);
  }

  _impl_.problem_ = reinterpret_cast<::mojo::spec::Problem*>(value);
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.problem)
}

// string experiment_name = 18;
inline void Pipeline::clear_experiment_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.experiment_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000080U);
}
inline const ::std::string& Pipeline::experiment_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Pipeline.experiment_name)
  return _internal_experiment_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Pipeline::set_experiment_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  _impl_.experiment_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.Pipeline.experiment_name)
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::mutable_experiment_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::std::string* _s = _internal_mutable_experiment_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Pipeline.experiment_name)
  return _s;
}
inline const ::std::string& Pipeline::_internal_experiment_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.experiment_name_.Get();
}
inline void Pipeline::_internal_set_experiment_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.experiment_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Pipeline::_internal_mutable_experiment_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.experiment_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Pipeline::release_experiment_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Pipeline.experiment_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000080U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  auto* released = _impl_.experiment_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.experiment_name_.Set("", GetArena());
  }
  return released;
}
inline void Pipeline::set_allocated_experiment_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }
  _impl_.experiment_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.experiment_name_.IsDefault()) {
    _impl_.experiment_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Pipeline.experiment_name)
}

// -------------------------------------------------------------------

// OrigMatrixSparseRow

// string raw_feature_name = 1;
inline void OrigMatrixSparseRow::clear_raw_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.raw_feature_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& OrigMatrixSparseRow::raw_feature_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.OrigMatrixSparseRow.raw_feature_name)
  return _internal_raw_feature_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OrigMatrixSparseRow::set_raw_feature_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.raw_feature_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.OrigMatrixSparseRow.raw_feature_name)
}
inline ::std::string* PROTOBUF_NONNULL OrigMatrixSparseRow::mutable_raw_feature_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_raw_feature_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.OrigMatrixSparseRow.raw_feature_name)
  return _s;
}
inline const ::std::string& OrigMatrixSparseRow::_internal_raw_feature_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.raw_feature_name_.Get();
}
inline void OrigMatrixSparseRow::_internal_set_raw_feature_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.raw_feature_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OrigMatrixSparseRow::_internal_mutable_raw_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.raw_feature_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OrigMatrixSparseRow::release_raw_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.OrigMatrixSparseRow.raw_feature_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.raw_feature_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.raw_feature_name_.Set("", GetArena());
  }
  return released;
}
inline void OrigMatrixSparseRow::set_allocated_raw_feature_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.raw_feature_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.raw_feature_name_.IsDefault()) {
    _impl_.raw_feature_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.OrigMatrixSparseRow.raw_feature_name)
}

// repeated .mojo.spec.SparseValue row = 2;
inline int OrigMatrixSparseRow::_internal_row_size() const {
  return _internal_row().size();
}
inline int OrigMatrixSparseRow::row_size() const {
  return _internal_row_size();
}
inline void OrigMatrixSparseRow::clear_row() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.row_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::mojo::spec::SparseValue* PROTOBUF_NONNULL OrigMatrixSparseRow::mutable_row(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.OrigMatrixSparseRow.row)
  return _internal_mutable_row()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>* PROTOBUF_NONNULL OrigMatrixSparseRow::mutable_row()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.OrigMatrixSparseRow.row)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_row();
}
inline const ::mojo::spec::SparseValue& OrigMatrixSparseRow::row(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.OrigMatrixSparseRow.row)
  return _internal_row().Get(index);
}
inline ::mojo::spec::SparseValue* PROTOBUF_NONNULL OrigMatrixSparseRow::add_row()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::mojo::spec::SparseValue* _add =
      _internal_mutable_row()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.OrigMatrixSparseRow.row)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>& OrigMatrixSparseRow::row() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.OrigMatrixSparseRow.row)
  return _internal_row();
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>&
OrigMatrixSparseRow::_internal_row() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.row_;
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::SparseValue>* PROTOBUF_NONNULL
OrigMatrixSparseRow::_internal_mutable_row() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.row_;
}

// -------------------------------------------------------------------

// SparseValue

// string orig_feature_name = 1;
inline void SparseValue::clear_orig_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.orig_feature_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& SparseValue::orig_feature_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.SparseValue.orig_feature_name)
  return _internal_orig_feature_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SparseValue::set_orig_feature_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.orig_feature_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.SparseValue.orig_feature_name)
}
inline ::std::string* PROTOBUF_NONNULL SparseValue::mutable_orig_feature_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_orig_feature_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.SparseValue.orig_feature_name)
  return _s;
}
inline const ::std::string& SparseValue::_internal_orig_feature_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.orig_feature_name_.Get();
}
inline void SparseValue::_internal_set_orig_feature_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.orig_feature_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SparseValue::_internal_mutable_orig_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.orig_feature_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SparseValue::release_orig_feature_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.SparseValue.orig_feature_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.orig_feature_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.orig_feature_name_.Set("", GetArena());
  }
  return released;
}
inline void SparseValue::set_allocated_orig_feature_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.orig_feature_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.orig_feature_name_.IsDefault()) {
    _impl_.orig_feature_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.SparseValue.orig_feature_name)
}

// double value = 2;
inline void SparseValue::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline double SparseValue::value() const {
  // @@protoc_insertion_point(field_get:mojo.spec.SparseValue.value)
  return _internal_value();
}
inline void SparseValue::set_value(double value) {
  _internal_set_value(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.SparseValue.value)
}
inline double SparseValue::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline void SparseValue::_internal_set_value(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = value;
}

// -------------------------------------------------------------------

// License

// string license_serial_number = 1;
inline void License::clear_license_serial_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.license_serial_number_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& License::license_serial_number() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.License.license_serial_number)
  return _internal_license_serial_number();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void License::set_license_serial_number(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.license_serial_number_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.License.license_serial_number)
}
inline ::std::string* PROTOBUF_NONNULL License::mutable_license_serial_number()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_license_serial_number();
  // @@protoc_insertion_point(field_mutable:mojo.spec.License.license_serial_number)
  return _s;
}
inline const ::std::string& License::_internal_license_serial_number() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.license_serial_number_.Get();
}
inline void License::_internal_set_license_serial_number(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.license_serial_number_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL License::_internal_mutable_license_serial_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.license_serial_number_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE License::release_license_serial_number() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.License.license_serial_number)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.license_serial_number_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.license_serial_number_.Set("", GetArena());
  }
  return released;
}
inline void License::set_allocated_license_serial_number(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.license_serial_number_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.license_serial_number_.IsDefault()) {
    _impl_.license_serial_number_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.License.license_serial_number)
}

// string license_type = 2;
inline void License::clear_license_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.license_type_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline const ::std::string& License::license_type() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.License.license_type)
  return _internal_license_type();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void License::set_license_type(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.license_type_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.License.license_type)
}
inline ::std::string* PROTOBUF_NONNULL License::mutable_license_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_license_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.License.license_type)
  return _s;
}
inline const ::std::string& License::_internal_license_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.license_type_.Get();
}
inline void License::_internal_set_license_type(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.license_type_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL License::_internal_mutable_license_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.license_type_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE License::release_license_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.License.license_type)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.license_type_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.license_type_.Set("", GetArena());
  }
  return released;
}
inline void License::set_allocated_license_type(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.license_type_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.license_type_.IsDefault()) {
    _impl_.license_type_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.License.license_type)
}

// string licensee_user_id = 3;
inline void License::clear_licensee_user_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.licensee_user_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& License::licensee_user_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.License.licensee_user_id)
  return _internal_licensee_user_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void License::set_licensee_user_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.licensee_user_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.License.licensee_user_id)
}
inline ::std::string* PROTOBUF_NONNULL License::mutable_licensee_user_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_licensee_user_id();
  // @@protoc_insertion_point(field_mutable:mojo.spec.License.licensee_user_id)
  return _s;
}
inline const ::std::string& License::_internal_licensee_user_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.licensee_user_id_.Get();
}
inline void License::_internal_set_licensee_user_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.licensee_user_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL License::_internal_mutable_licensee_user_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.licensee_user_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE License::release_licensee_user_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.License.licensee_user_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.licensee_user_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.licensee_user_id_.Set("", GetArena());
  }
  return released;
}
inline void License::set_allocated_licensee_user_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.licensee_user_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.licensee_user_id_.IsDefault()) {
    _impl_.licensee_user_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.License.licensee_user_id)
}

// -------------------------------------------------------------------

// Frame

// repeated .mojo.spec.Column columns = 1;
inline int Frame::_internal_columns_size() const {
  return _internal_columns().size();
}
inline int Frame::columns_size() const {
  return _internal_columns_size();
}
inline ::mojo::spec::Column* PROTOBUF_NONNULL Frame::mutable_columns(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Frame.columns)
  return _internal_mutable_columns()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>* PROTOBUF_NONNULL Frame::mutable_columns()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Frame.columns)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_columns();
}
inline const ::mojo::spec::Column& Frame::columns(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Frame.columns)
  return _internal_columns().Get(index);
}
inline ::mojo::spec::Column* PROTOBUF_NONNULL Frame::add_columns()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::mojo::spec::Column* _add =
      _internal_mutable_columns()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.Frame.columns)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>& Frame::columns() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Frame.columns)
  return _internal_columns();
}
inline const ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>&
Frame::_internal_columns() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.columns_;
}
inline ::google::protobuf::RepeatedPtrField<::mojo::spec::Column>* PROTOBUF_NONNULL
Frame::_internal_mutable_columns() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.columns_;
}

// -------------------------------------------------------------------

// ExecPipeOp

// string file_name = 1;
inline void ExecPipeOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& ExecPipeOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.ExecPipeOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ExecPipeOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.ExecPipeOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL ExecPipeOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.ExecPipeOp.file_name)
  return _s;
}
inline const ::std::string& ExecPipeOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void ExecPipeOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ExecPipeOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ExecPipeOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.ExecPipeOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void ExecPipeOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.ExecPipeOp.file_name)
}

// -------------------------------------------------------------------

// XGBoostOp

// int32 num_tree_limit = 1;
inline void XGBoostOp::clear_num_tree_limit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t XGBoostOp::num_tree_limit() const {
  // @@protoc_insertion_point(field_get:mojo.spec.XGBoostOp.num_tree_limit)
  return _internal_num_tree_limit();
}
inline void XGBoostOp::set_num_tree_limit(::int32_t value) {
  _internal_set_num_tree_limit(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.XGBoostOp.num_tree_limit)
}
inline ::int32_t XGBoostOp::_internal_num_tree_limit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_tree_limit_;
}
inline void XGBoostOp::_internal_set_num_tree_limit(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = value;
}

// string file_name = 2;
inline void XGBoostOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& XGBoostOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.XGBoostOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void XGBoostOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.XGBoostOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL XGBoostOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.XGBoostOp.file_name)
  return _s;
}
inline const ::std::string& XGBoostOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void XGBoostOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL XGBoostOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE XGBoostOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.XGBoostOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void XGBoostOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.XGBoostOp.file_name)
}

// -------------------------------------------------------------------

// LightGBMOp

// int32 num_tree_limit = 1;
inline void LightGBMOp::clear_num_tree_limit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t LightGBMOp::num_tree_limit() const {
  // @@protoc_insertion_point(field_get:mojo.spec.LightGBMOp.num_tree_limit)
  return _internal_num_tree_limit();
}
inline void LightGBMOp::set_num_tree_limit(::int32_t value) {
  _internal_set_num_tree_limit(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.LightGBMOp.num_tree_limit)
}
inline ::int32_t LightGBMOp::_internal_num_tree_limit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_tree_limit_;
}
inline void LightGBMOp::_internal_set_num_tree_limit(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = value;
}

// string file_name = 2;
inline void LightGBMOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& LightGBMOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.LightGBMOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LightGBMOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.LightGBMOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL LightGBMOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.LightGBMOp.file_name)
  return _s;
}
inline const ::std::string& LightGBMOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void LightGBMOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LightGBMOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LightGBMOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.LightGBMOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void LightGBMOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.LightGBMOp.file_name)
}

// -------------------------------------------------------------------

// CatBoostOp

// int32 num_tree_limit = 1;
inline void CatBoostOp::clear_num_tree_limit() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t CatBoostOp::num_tree_limit() const {
  // @@protoc_insertion_point(field_get:mojo.spec.CatBoostOp.num_tree_limit)
  return _internal_num_tree_limit();
}
inline void CatBoostOp::set_num_tree_limit(::int32_t value) {
  _internal_set_num_tree_limit(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.CatBoostOp.num_tree_limit)
}
inline ::int32_t CatBoostOp::_internal_num_tree_limit() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.num_tree_limit_;
}
inline void CatBoostOp::_internal_set_num_tree_limit(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.num_tree_limit_ = value;
}

// string file_name = 2;
inline void CatBoostOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& CatBoostOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.CatBoostOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void CatBoostOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.CatBoostOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL CatBoostOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.CatBoostOp.file_name)
  return _s;
}
inline const ::std::string& CatBoostOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void CatBoostOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL CatBoostOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE CatBoostOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.CatBoostOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void CatBoostOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.CatBoostOp.file_name)
}

// -------------------------------------------------------------------

// TensorFlowOp

// string file_name = 1;
inline void TensorFlowOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& TensorFlowOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.TensorFlowOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TensorFlowOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.TensorFlowOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.TensorFlowOp.file_name)
  return _s;
}
inline const ::std::string& TensorFlowOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void TensorFlowOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TensorFlowOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.TensorFlowOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void TensorFlowOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.TensorFlowOp.file_name)
}

// repeated string inputs = 2;
inline int TensorFlowOp::_internal_inputs_size() const {
  return _internal_inputs().size();
}
inline int TensorFlowOp::inputs_size() const {
  return _internal_inputs_size();
}
inline void TensorFlowOp::clear_inputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.inputs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::add_inputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_inputs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.TensorFlowOp.inputs)
  return _s;
}
inline const ::std::string& TensorFlowOp::inputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.TensorFlowOp.inputs)
  return _internal_inputs().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::mutable_inputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.TensorFlowOp.inputs)
  return _internal_mutable_inputs()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void TensorFlowOp::set_inputs(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_inputs()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.TensorFlowOp.inputs)
}
template <typename Arg_, typename... Args_>
inline void TensorFlowOp::add_inputs(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_inputs(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.TensorFlowOp.inputs)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& TensorFlowOp::inputs()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.TensorFlowOp.inputs)
  return _internal_inputs();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
TensorFlowOp::mutable_inputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.TensorFlowOp.inputs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_inputs();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
TensorFlowOp::_internal_inputs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.inputs_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
TensorFlowOp::_internal_mutable_inputs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.inputs_;
}

// repeated string outputs = 3;
inline int TensorFlowOp::_internal_outputs_size() const {
  return _internal_outputs().size();
}
inline int TensorFlowOp::outputs_size() const {
  return _internal_outputs_size();
}
inline void TensorFlowOp::clear_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outputs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::add_outputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_outputs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.TensorFlowOp.outputs)
  return _s;
}
inline const ::std::string& TensorFlowOp::outputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.TensorFlowOp.outputs)
  return _internal_outputs().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::mutable_outputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.TensorFlowOp.outputs)
  return _internal_mutable_outputs()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void TensorFlowOp::set_outputs(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_outputs()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.TensorFlowOp.outputs)
}
template <typename Arg_, typename... Args_>
inline void TensorFlowOp::add_outputs(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_outputs(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:mojo.spec.TensorFlowOp.outputs)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& TensorFlowOp::outputs()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.TensorFlowOp.outputs)
  return _internal_outputs();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
TensorFlowOp::mutable_outputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.TensorFlowOp.outputs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_outputs();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
TensorFlowOp::_internal_outputs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.outputs_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
TensorFlowOp::_internal_mutable_outputs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.outputs_;
}

// string tf_version = 4;
inline void TensorFlowOp::clear_tf_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tf_version_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::std::string& TensorFlowOp::tf_version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.TensorFlowOp.tf_version)
  return _internal_tf_version();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TensorFlowOp::set_tf_version(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.tf_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.TensorFlowOp.tf_version)
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::mutable_tf_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_tf_version();
  // @@protoc_insertion_point(field_mutable:mojo.spec.TensorFlowOp.tf_version)
  return _s;
}
inline const ::std::string& TensorFlowOp::_internal_tf_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tf_version_.Get();
}
inline void TensorFlowOp::_internal_set_tf_version(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tf_version_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TensorFlowOp::_internal_mutable_tf_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.tf_version_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TensorFlowOp::release_tf_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.TensorFlowOp.tf_version)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.tf_version_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.tf_version_.Set("", GetArena());
  }
  return released;
}
inline void TensorFlowOp::set_allocated_tf_version(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.tf_version_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.tf_version_.IsDefault()) {
    _impl_.tf_version_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.TensorFlowOp.tf_version)
}

// -------------------------------------------------------------------

// PytorchOp

// string file_name = 1;
inline void PytorchOp::clear_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline const ::std::string& PytorchOp::file_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchOp.file_name)
  return _internal_file_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void PytorchOp::set_file_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.file_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchOp.file_name)
}
inline ::std::string* PROTOBUF_NONNULL PytorchOp::mutable_file_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_file_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.PytorchOp.file_name)
  return _s;
}
inline const ::std::string& PytorchOp::_internal_file_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.file_name_.Get();
}
inline void PytorchOp::_internal_set_file_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.file_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL PytorchOp::_internal_mutable_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.file_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE PytorchOp::release_file_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.PytorchOp.file_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.file_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.file_name_.Set("", GetArena());
  }
  return released;
}
inline void PytorchOp::set_allocated_file_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.file_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.file_name_.IsDefault()) {
    _impl_.file_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.PytorchOp.file_name)
}

// string pytorch_version = 2;
inline void PytorchOp::clear_pytorch_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pytorch_version_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000008U);
}
inline const ::std::string& PytorchOp::pytorch_version() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchOp.pytorch_version)
  return _internal_pytorch_version();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void PytorchOp::set_pytorch_version(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.pytorch_version_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchOp.pytorch_version)
}
inline ::std::string* PROTOBUF_NONNULL PytorchOp::mutable_pytorch_version()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_pytorch_version();
  // @@protoc_insertion_point(field_mutable:mojo.spec.PytorchOp.pytorch_version)
  return _s;
}
inline const ::std::string& PytorchOp::_internal_pytorch_version() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pytorch_version_.Get();
}
inline void PytorchOp::_internal_set_pytorch_version(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pytorch_version_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL PytorchOp::_internal_mutable_pytorch_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.pytorch_version_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE PytorchOp::release_pytorch_version() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.PytorchOp.pytorch_version)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.pytorch_version_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.pytorch_version_.Set("", GetArena());
  }
  return released;
}
inline void PytorchOp::set_allocated_pytorch_version(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.pytorch_version_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.pytorch_version_.IsDefault()) {
    _impl_.pytorch_version_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.PytorchOp.pytorch_version)
}

// repeated int32 tensor_sizes = 3;
inline int PytorchOp::_internal_tensor_sizes_size() const {
  return _internal_tensor_sizes().size();
}
inline int PytorchOp::tensor_sizes_size() const {
  return _internal_tensor_sizes_size();
}
inline void PytorchOp::clear_tensor_sizes() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tensor_sizes_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int32_t PytorchOp::tensor_sizes(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchOp.tensor_sizes)
  return _internal_tensor_sizes().Get(index);
}
inline void PytorchOp::set_tensor_sizes(int index, ::int32_t value) {
  _internal_mutable_tensor_sizes()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchOp.tensor_sizes)
}
inline void PytorchOp::add_tensor_sizes(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_tensor_sizes()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.PytorchOp.tensor_sizes)
}
inline const ::google::protobuf::RepeatedField<::int32_t>& PytorchOp::tensor_sizes() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.PytorchOp.tensor_sizes)
  return _internal_tensor_sizes();
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL PytorchOp::mutable_tensor_sizes()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.PytorchOp.tensor_sizes)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tensor_sizes();
}
inline const ::google::protobuf::RepeatedField<::int32_t>&
PytorchOp::_internal_tensor_sizes() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tensor_sizes_;
}
inline ::google::protobuf::RepeatedField<::int32_t>* PROTOBUF_NONNULL
PytorchOp::_internal_mutable_tensor_sizes() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tensor_sizes_;
}

// repeated .mojo.spec.TorchTensorType tensor_types = 4;
inline int PytorchOp::_internal_tensor_types_size() const {
  return _internal_tensor_types().size();
}
inline int PytorchOp::tensor_types_size() const {
  return _internal_tensor_types_size();
}
inline void PytorchOp::clear_tensor_types() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tensor_types_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::mojo::spec::TorchTensorType PytorchOp::tensor_types(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.PytorchOp.tensor_types)
  return static_cast<::mojo::spec::TorchTensorType>(_internal_tensor_types().Get(index));
}
inline void PytorchOp::set_tensor_types(int index, ::mojo::spec::TorchTensorType value) {
  _internal_mutable_tensor_types()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.PytorchOp.tensor_types)
}
inline void PytorchOp::add_tensor_types(::mojo::spec::TorchTensorType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_tensor_types()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:mojo.spec.PytorchOp.tensor_types)
}
inline const ::google::protobuf::RepeatedField<int>& PytorchOp::tensor_types() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.PytorchOp.tensor_types)
  return _internal_tensor_types();
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL PytorchOp::mutable_tensor_types()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.PytorchOp.tensor_types)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tensor_types();
}
inline const ::google::protobuf::RepeatedField<int>& PytorchOp::_internal_tensor_types()
    const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tensor_types_;
}
inline ::google::protobuf::RepeatedField<int>* PROTOBUF_NONNULL
PytorchOp::_internal_mutable_tensor_types() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tensor_types_;
}

// -------------------------------------------------------------------

// LinearBlenderOp

// repeated double weights = 1;
inline int LinearBlenderOp::_internal_weights_size() const {
  return _internal_weights().size();
}
inline int LinearBlenderOp::weights_size() const {
  return _internal_weights_size();
}
inline void LinearBlenderOp::clear_weights() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weights_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline double LinearBlenderOp::weights(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.LinearBlenderOp.weights)
  return _internal_weights().Get(index);
}
inline void LinearBlenderOp::set_weights(int index, double value) {
  _internal_mutable_weights()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.LinearBlenderOp.weights)
}
inline void LinearBlenderOp::add_weights(double value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_weights()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.LinearBlenderOp.weights)
}
inline const ::google::protobuf::RepeatedField<double>& LinearBlenderOp::weights() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.LinearBlenderOp.weights)
  return _internal_weights();
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL LinearBlenderOp::mutable_weights()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.LinearBlenderOp.weights)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_weights();
}
inline const ::google::protobuf::RepeatedField<double>&
LinearBlenderOp::_internal_weights() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weights_;
}
inline ::google::protobuf::RepeatedField<double>* PROTOBUF_NONNULL
LinearBlenderOp::_internal_mutable_weights() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.weights_;
}

// -------------------------------------------------------------------

// ImgResizeOp

// int32 target_height = 1;
inline void ImgResizeOp::clear_target_height() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_height_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int32_t ImgResizeOp::target_height() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImgResizeOp.target_height)
  return _internal_target_height();
}
inline void ImgResizeOp::set_target_height(::int32_t value) {
  _internal_set_target_height(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImgResizeOp.target_height)
}
inline ::int32_t ImgResizeOp::_internal_target_height() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_height_;
}
inline void ImgResizeOp::_internal_set_target_height(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_height_ = value;
}

// int32 target_width = 2;
inline void ImgResizeOp::clear_target_width() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_width_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t ImgResizeOp::target_width() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImgResizeOp.target_width)
  return _internal_target_width();
}
inline void ImgResizeOp::set_target_width(::int32_t value) {
  _internal_set_target_width(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImgResizeOp.target_width)
}
inline ::int32_t ImgResizeOp::_internal_target_width() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_width_;
}
inline void ImgResizeOp::_internal_set_target_width(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_width_ = value;
}

// -------------------------------------------------------------------

// ImgResizeShorterOp

// int32 target_size = 1;
inline void ImgResizeShorterOp::clear_target_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_size_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int32_t ImgResizeShorterOp::target_size() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImgResizeShorterOp.target_size)
  return _internal_target_size();
}
inline void ImgResizeShorterOp::set_target_size(::int32_t value) {
  _internal_set_target_size(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImgResizeShorterOp.target_size)
}
inline ::int32_t ImgResizeShorterOp::_internal_target_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_size_;
}
inline void ImgResizeShorterOp::_internal_set_target_size(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_size_ = value;
}

// -------------------------------------------------------------------

// ImgCenterCropOp

// int32 target_height = 1;
inline void ImgCenterCropOp::clear_target_height() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_height_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int32_t ImgCenterCropOp::target_height() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImgCenterCropOp.target_height)
  return _internal_target_height();
}
inline void ImgCenterCropOp::set_target_height(::int32_t value) {
  _internal_set_target_height(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImgCenterCropOp.target_height)
}
inline ::int32_t ImgCenterCropOp::_internal_target_height() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_height_;
}
inline void ImgCenterCropOp::_internal_set_target_height(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_height_ = value;
}

// int32 target_width = 2;
inline void ImgCenterCropOp::clear_target_width() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_width_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::int32_t ImgCenterCropOp::target_width() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImgCenterCropOp.target_width)
  return _internal_target_width();
}
inline void ImgCenterCropOp::set_target_width(::int32_t value) {
  _internal_set_target_width(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImgCenterCropOp.target_width)
}
inline ::int32_t ImgCenterCropOp::_internal_target_width() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.target_width_;
}
inline void ImgCenterCropOp::_internal_set_target_width(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.target_width_ = value;
}

// -------------------------------------------------------------------

// ImageNetPreprocessingOp

// .mojo.spec.ImageNetPreprocessingMode mode = 1;
inline void ImageNetPreprocessingOp::clear_mode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mode_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::mojo::spec::ImageNetPreprocessingMode ImageNetPreprocessingOp::mode() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImageNetPreprocessingOp.mode)
  return _internal_mode();
}
inline void ImageNetPreprocessingOp::set_mode(::mojo::spec::ImageNetPreprocessingMode value) {
  _internal_set_mode(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:mojo.spec.ImageNetPreprocessingOp.mode)
}
inline ::mojo::spec::ImageNetPreprocessingMode ImageNetPreprocessingOp::_internal_mode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::mojo::spec::ImageNetPreprocessingMode>(_impl_.mode_);
}
inline void ImageNetPreprocessingOp::_internal_set_mode(::mojo::spec::ImageNetPreprocessingMode value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mode_ = value;
}

// repeated float mean = 2;
inline int ImageNetPreprocessingOp::_internal_mean_size() const {
  return _internal_mean().size();
}
inline int ImageNetPreprocessingOp::mean_size() const {
  return _internal_mean_size();
}
inline void ImageNetPreprocessingOp::clear_mean() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mean_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline float ImageNetPreprocessingOp::mean(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImageNetPreprocessingOp.mean)
  return _internal_mean().Get(index);
}
inline void ImageNetPreprocessingOp::set_mean(int index, float value) {
  _internal_mutable_mean()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.ImageNetPreprocessingOp.mean)
}
inline void ImageNetPreprocessingOp::add_mean(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_mean()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.ImageNetPreprocessingOp.mean)
}
inline const ::google::protobuf::RepeatedField<float>& ImageNetPreprocessingOp::mean() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.ImageNetPreprocessingOp.mean)
  return _internal_mean();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL ImageNetPreprocessingOp::mutable_mean()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.ImageNetPreprocessingOp.mean)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_mean();
}
inline const ::google::protobuf::RepeatedField<float>&
ImageNetPreprocessingOp::_internal_mean() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mean_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
ImageNetPreprocessingOp::_internal_mutable_mean() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.mean_;
}

// repeated float std = 3;
inline int ImageNetPreprocessingOp::_internal_std_size() const {
  return _internal_std().size();
}
inline int ImageNetPreprocessingOp::std_size() const {
  return _internal_std_size();
}
inline void ImageNetPreprocessingOp::clear_std() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.std_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline float ImageNetPreprocessingOp::std(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.ImageNetPreprocessingOp.std)
  return _internal_std().Get(index);
}
inline void ImageNetPreprocessingOp::set_std(int index, float value) {
  _internal_mutable_std()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.ImageNetPreprocessingOp.std)
}
inline void ImageNetPreprocessingOp::add_std(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_std()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:mojo.spec.ImageNetPreprocessingOp.std)
}
inline const ::google::protobuf::RepeatedField<float>& ImageNetPreprocessingOp::std() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.ImageNetPreprocessingOp.std)
  return _internal_std();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL ImageNetPreprocessingOp::mutable_std()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.ImageNetPreprocessingOp.std)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_std();
}
inline const ::google::protobuf::RepeatedField<float>&
ImageNetPreprocessingOp::_internal_std() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.std_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
ImageNetPreprocessingOp::_internal_mutable_std() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.std_;
}

// -------------------------------------------------------------------

// IdentityOp

// -------------------------------------------------------------------

// Transformation

// int32 group_id = 1;
inline void Transformation::clear_group_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_id_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000004U);
}
inline ::int32_t Transformation::group_id() const {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.group_id)
  return _internal_group_id();
}
inline void Transformation::set_group_id(::int32_t value) {
  _internal_set_group_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:mojo.spec.Transformation.group_id)
}
inline ::int32_t Transformation::_internal_group_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.group_id_;
}
inline void Transformation::_internal_set_group_id(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.group_id_ = value;
}

// repeated string inputs = 2;
inline int Transformation::_internal_inputs_size() const {
  return _internal_inputs().size();
}
inline int Transformation::inputs_size() const {
  return _internal_inputs_size();
}
inline void Transformation::clear_inputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.inputs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL Transformation::add_inputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_inputs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.Transformation.inputs)
  return _s;
}
inline const ::std::string& Transformation::inputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.inputs)
  return _internal_inputs().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL Transformation::mutable_inputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.inputs)
  return _internal_mutable_inputs()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void Transformation::set_inputs(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_inputs()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.Transformation.inputs)
}
template <typename Arg_, typename... Args_>
inline void Transformation::add_inputs(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_inputs(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.Transformation.inputs)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& Transformation::inputs()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Transformation.inputs)
  return _internal_inputs();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Transformation::mutable_inputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Transformation.inputs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_inputs();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
Transformation::_internal_inputs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.inputs_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Transformation::_internal_mutable_inputs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.inputs_;
}

// repeated string outputs = 3;
inline int Transformation::_internal_outputs_size() const {
  return _internal_outputs().size();
}
inline int Transformation::outputs_size() const {
  return _internal_outputs_size();
}
inline void Transformation::clear_outputs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.outputs_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::std::string* PROTOBUF_NONNULL Transformation::add_outputs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_outputs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add_mutable:mojo.spec.Transformation.outputs)
  return _s;
}
inline const ::std::string& Transformation::outputs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.outputs)
  return _internal_outputs().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL Transformation::mutable_outputs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.outputs)
  return _internal_mutable_outputs()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void Transformation::set_outputs(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_outputs()->Mutable(index), ::std::forward<Arg_>(value),
                        args... );
  // @@protoc_insertion_point(field_set:mojo.spec.Transformation.outputs)
}
template <typename Arg_, typename... Args_>
inline void Transformation::add_outputs(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_outputs(), ::std::forward<Arg_>(value),
      args... );
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:mojo.spec.Transformation.outputs)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& Transformation::outputs()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.Transformation.outputs)
  return _internal_outputs();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Transformation::mutable_outputs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.Transformation.outputs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_outputs();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
Transformation::_internal_outputs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.outputs_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
Transformation::_internal_mutable_outputs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.outputs_;
}

// .mojo.spec.ConstBinaryOp const_binary_op = 4;
inline bool Transformation::has_const_binary_op() const {
  return Type_case() == kConstBinaryOp;
}
inline bool Transformation::_internal_has_const_binary_op() const {
  return Type_case() == kConstBinaryOp;
}
inline void Transformation::set_has_const_binary_op() {
  _impl_._oneof_case_[0] = kConstBinaryOp;
}
inline ::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE Transformation::release_const_binary_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.const_binary_op)
  if (Type_case() == kConstBinaryOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ConstBinaryOp*>(_impl_.Type_.const_binary_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.const_binary_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ConstBinaryOp& Transformation::_internal_const_binary_op() const {
  return Type_case() == kConstBinaryOp ? static_cast<const ::mojo::spec::ConstBinaryOp&>(*reinterpret_cast<::mojo::spec::ConstBinaryOp*>(_impl_.Type_.const_binary_op_))
                     : reinterpret_cast<const ::mojo::spec::ConstBinaryOp&>(::mojo::spec::_ConstBinaryOp_default_instance_);
}
inline const ::mojo::spec::ConstBinaryOp& Transformation::const_binary_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.const_binary_op)
  return _internal_const_binary_op();
}
inline ::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_const_binary_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.const_binary_op)
  if (Type_case() == kConstBinaryOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ConstBinaryOp*>(_impl_.Type_.const_binary_op_);
    _impl_.Type_.const_binary_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_const_binary_op(
    ::mojo::spec::ConstBinaryOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_const_binary_op();
    _impl_.Type_.const_binary_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.const_binary_op)
}
inline ::mojo::spec::ConstBinaryOp* PROTOBUF_NONNULL Transformation::_internal_mutable_const_binary_op() {
  if (Type_case() != kConstBinaryOp) {
    clear_Type();
    set_has_const_binary_op();
    _impl_.Type_.const_binary_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ConstBinaryOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ConstBinaryOp*>(_impl_.Type_.const_binary_op_);
}
inline ::mojo::spec::ConstBinaryOp* PROTOBUF_NONNULL Transformation::mutable_const_binary_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ConstBinaryOp* _msg = _internal_mutable_const_binary_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.const_binary_op)
  return _msg;
}

// .mojo.spec.BinaryOp binary_op = 5;
inline bool Transformation::has_binary_op() const {
  return Type_case() == kBinaryOp;
}
inline bool Transformation::_internal_has_binary_op() const {
  return Type_case() == kBinaryOp;
}
inline void Transformation::set_has_binary_op() {
  _impl_._oneof_case_[0] = kBinaryOp;
}
inline ::mojo::spec::BinaryOp* PROTOBUF_NULLABLE Transformation::release_binary_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.binary_op)
  if (Type_case() == kBinaryOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::BinaryOp*>(_impl_.Type_.binary_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.binary_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::BinaryOp& Transformation::_internal_binary_op() const {
  return Type_case() == kBinaryOp ? static_cast<const ::mojo::spec::BinaryOp&>(*reinterpret_cast<::mojo::spec::BinaryOp*>(_impl_.Type_.binary_op_))
                     : reinterpret_cast<const ::mojo::spec::BinaryOp&>(::mojo::spec::_BinaryOp_default_instance_);
}
inline const ::mojo::spec::BinaryOp& Transformation::binary_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.binary_op)
  return _internal_binary_op();
}
inline ::mojo::spec::BinaryOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_binary_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.binary_op)
  if (Type_case() == kBinaryOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::BinaryOp*>(_impl_.Type_.binary_op_);
    _impl_.Type_.binary_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_binary_op(
    ::mojo::spec::BinaryOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_binary_op();
    _impl_.Type_.binary_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.binary_op)
}
inline ::mojo::spec::BinaryOp* PROTOBUF_NONNULL Transformation::_internal_mutable_binary_op() {
  if (Type_case() != kBinaryOp) {
    clear_Type();
    set_has_binary_op();
    _impl_.Type_.binary_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::BinaryOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::BinaryOp*>(_impl_.Type_.binary_op_);
}
inline ::mojo::spec::BinaryOp* PROTOBUF_NONNULL Transformation::mutable_binary_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::BinaryOp* _msg = _internal_mutable_binary_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.binary_op)
  return _msg;
}

// .mojo.spec.AsTypeOp as_type_op = 6;
inline bool Transformation::has_as_type_op() const {
  return Type_case() == kAsTypeOp;
}
inline bool Transformation::_internal_has_as_type_op() const {
  return Type_case() == kAsTypeOp;
}
inline void Transformation::set_has_as_type_op() {
  _impl_._oneof_case_[0] = kAsTypeOp;
}
inline ::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE Transformation::release_as_type_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.as_type_op)
  if (Type_case() == kAsTypeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::AsTypeOp*>(_impl_.Type_.as_type_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.as_type_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::AsTypeOp& Transformation::_internal_as_type_op() const {
  return Type_case() == kAsTypeOp ? static_cast<const ::mojo::spec::AsTypeOp&>(*reinterpret_cast<::mojo::spec::AsTypeOp*>(_impl_.Type_.as_type_op_))
                     : reinterpret_cast<const ::mojo::spec::AsTypeOp&>(::mojo::spec::_AsTypeOp_default_instance_);
}
inline const ::mojo::spec::AsTypeOp& Transformation::as_type_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.as_type_op)
  return _internal_as_type_op();
}
inline ::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_as_type_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.as_type_op)
  if (Type_case() == kAsTypeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::AsTypeOp*>(_impl_.Type_.as_type_op_);
    _impl_.Type_.as_type_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_as_type_op(
    ::mojo::spec::AsTypeOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_as_type_op();
    _impl_.Type_.as_type_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.as_type_op)
}
inline ::mojo::spec::AsTypeOp* PROTOBUF_NONNULL Transformation::_internal_mutable_as_type_op() {
  if (Type_case() != kAsTypeOp) {
    clear_Type();
    set_has_as_type_op();
    _impl_.Type_.as_type_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::AsTypeOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::AsTypeOp*>(_impl_.Type_.as_type_op_);
}
inline ::mojo::spec::AsTypeOp* PROTOBUF_NONNULL Transformation::mutable_as_type_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::AsTypeOp* _msg = _internal_mutable_as_type_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.as_type_op)
  return _msg;
}

// .mojo.spec.ExpOp exp_op = 7;
inline bool Transformation::has_exp_op() const {
  return Type_case() == kExpOp;
}
inline bool Transformation::_internal_has_exp_op() const {
  return Type_case() == kExpOp;
}
inline void Transformation::set_has_exp_op() {
  _impl_._oneof_case_[0] = kExpOp;
}
inline ::mojo::spec::ExpOp* PROTOBUF_NULLABLE Transformation::release_exp_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.exp_op)
  if (Type_case() == kExpOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExpOp*>(_impl_.Type_.exp_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.exp_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ExpOp& Transformation::_internal_exp_op() const {
  return Type_case() == kExpOp ? static_cast<const ::mojo::spec::ExpOp&>(*reinterpret_cast<::mojo::spec::ExpOp*>(_impl_.Type_.exp_op_))
                     : reinterpret_cast<const ::mojo::spec::ExpOp&>(::mojo::spec::_ExpOp_default_instance_);
}
inline const ::mojo::spec::ExpOp& Transformation::exp_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.exp_op)
  return _internal_exp_op();
}
inline ::mojo::spec::ExpOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_exp_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.exp_op)
  if (Type_case() == kExpOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExpOp*>(_impl_.Type_.exp_op_);
    _impl_.Type_.exp_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_exp_op(
    ::mojo::spec::ExpOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_exp_op();
    _impl_.Type_.exp_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.exp_op)
}
inline ::mojo::spec::ExpOp* PROTOBUF_NONNULL Transformation::_internal_mutable_exp_op() {
  if (Type_case() != kExpOp) {
    clear_Type();
    set_has_exp_op();
    _impl_.Type_.exp_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ExpOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ExpOp*>(_impl_.Type_.exp_op_);
}
inline ::mojo::spec::ExpOp* PROTOBUF_NONNULL Transformation::mutable_exp_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ExpOp* _msg = _internal_mutable_exp_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.exp_op)
  return _msg;
}

// .mojo.spec.ExpM1Op expm1_op = 8;
inline bool Transformation::has_expm1_op() const {
  return Type_case() == kExpm1Op;
}
inline bool Transformation::_internal_has_expm1_op() const {
  return Type_case() == kExpm1Op;
}
inline void Transformation::set_has_expm1_op() {
  _impl_._oneof_case_[0] = kExpm1Op;
}
inline ::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE Transformation::release_expm1_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.expm1_op)
  if (Type_case() == kExpm1Op) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExpM1Op*>(_impl_.Type_.expm1_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.expm1_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ExpM1Op& Transformation::_internal_expm1_op() const {
  return Type_case() == kExpm1Op ? static_cast<const ::mojo::spec::ExpM1Op&>(*reinterpret_cast<::mojo::spec::ExpM1Op*>(_impl_.Type_.expm1_op_))
                     : reinterpret_cast<const ::mojo::spec::ExpM1Op&>(::mojo::spec::_ExpM1Op_default_instance_);
}
inline const ::mojo::spec::ExpM1Op& Transformation::expm1_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.expm1_op)
  return _internal_expm1_op();
}
inline ::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_expm1_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.expm1_op)
  if (Type_case() == kExpm1Op) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExpM1Op*>(_impl_.Type_.expm1_op_);
    _impl_.Type_.expm1_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_expm1_op(
    ::mojo::spec::ExpM1Op* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_expm1_op();
    _impl_.Type_.expm1_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.expm1_op)
}
inline ::mojo::spec::ExpM1Op* PROTOBUF_NONNULL Transformation::_internal_mutable_expm1_op() {
  if (Type_case() != kExpm1Op) {
    clear_Type();
    set_has_expm1_op();
    _impl_.Type_.expm1_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ExpM1Op>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ExpM1Op*>(_impl_.Type_.expm1_op_);
}
inline ::mojo::spec::ExpM1Op* PROTOBUF_NONNULL Transformation::mutable_expm1_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ExpM1Op* _msg = _internal_mutable_expm1_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.expm1_op)
  return _msg;
}

// .mojo.spec.ScaleOp scale_op = 9;
inline bool Transformation::has_scale_op() const {
  return Type_case() == kScaleOp;
}
inline bool Transformation::_internal_has_scale_op() const {
  return Type_case() == kScaleOp;
}
inline void Transformation::set_has_scale_op() {
  _impl_._oneof_case_[0] = kScaleOp;
}
inline ::mojo::spec::ScaleOp* PROTOBUF_NULLABLE Transformation::release_scale_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.scale_op)
  if (Type_case() == kScaleOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ScaleOp*>(_impl_.Type_.scale_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.scale_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ScaleOp& Transformation::_internal_scale_op() const {
  return Type_case() == kScaleOp ? static_cast<const ::mojo::spec::ScaleOp&>(*reinterpret_cast<::mojo::spec::ScaleOp*>(_impl_.Type_.scale_op_))
                     : reinterpret_cast<const ::mojo::spec::ScaleOp&>(::mojo::spec::_ScaleOp_default_instance_);
}
inline const ::mojo::spec::ScaleOp& Transformation::scale_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.scale_op)
  return _internal_scale_op();
}
inline ::mojo::spec::ScaleOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_scale_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.scale_op)
  if (Type_case() == kScaleOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ScaleOp*>(_impl_.Type_.scale_op_);
    _impl_.Type_.scale_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_scale_op(
    ::mojo::spec::ScaleOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_scale_op();
    _impl_.Type_.scale_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.scale_op)
}
inline ::mojo::spec::ScaleOp* PROTOBUF_NONNULL Transformation::_internal_mutable_scale_op() {
  if (Type_case() != kScaleOp) {
    clear_Type();
    set_has_scale_op();
    _impl_.Type_.scale_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ScaleOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ScaleOp*>(_impl_.Type_.scale_op_);
}
inline ::mojo::spec::ScaleOp* PROTOBUF_NONNULL Transformation::mutable_scale_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ScaleOp* _msg = _internal_mutable_scale_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.scale_op)
  return _msg;
}

// .mojo.spec.SigmoidOp sigmoid_op = 10;
inline bool Transformation::has_sigmoid_op() const {
  return Type_case() == kSigmoidOp;
}
inline bool Transformation::_internal_has_sigmoid_op() const {
  return Type_case() == kSigmoidOp;
}
inline void Transformation::set_has_sigmoid_op() {
  _impl_._oneof_case_[0] = kSigmoidOp;
}
inline ::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE Transformation::release_sigmoid_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.sigmoid_op)
  if (Type_case() == kSigmoidOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SigmoidOp*>(_impl_.Type_.sigmoid_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.sigmoid_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::SigmoidOp& Transformation::_internal_sigmoid_op() const {
  return Type_case() == kSigmoidOp ? static_cast<const ::mojo::spec::SigmoidOp&>(*reinterpret_cast<::mojo::spec::SigmoidOp*>(_impl_.Type_.sigmoid_op_))
                     : reinterpret_cast<const ::mojo::spec::SigmoidOp&>(::mojo::spec::_SigmoidOp_default_instance_);
}
inline const ::mojo::spec::SigmoidOp& Transformation::sigmoid_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.sigmoid_op)
  return _internal_sigmoid_op();
}
inline ::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_sigmoid_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.sigmoid_op)
  if (Type_case() == kSigmoidOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SigmoidOp*>(_impl_.Type_.sigmoid_op_);
    _impl_.Type_.sigmoid_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_sigmoid_op(
    ::mojo::spec::SigmoidOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_sigmoid_op();
    _impl_.Type_.sigmoid_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.sigmoid_op)
}
inline ::mojo::spec::SigmoidOp* PROTOBUF_NONNULL Transformation::_internal_mutable_sigmoid_op() {
  if (Type_case() != kSigmoidOp) {
    clear_Type();
    set_has_sigmoid_op();
    _impl_.Type_.sigmoid_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::SigmoidOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::SigmoidOp*>(_impl_.Type_.sigmoid_op_);
}
inline ::mojo::spec::SigmoidOp* PROTOBUF_NONNULL Transformation::mutable_sigmoid_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::SigmoidOp* _msg = _internal_mutable_sigmoid_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.sigmoid_op)
  return _msg;
}

// .mojo.spec.PowerOp power_op = 11;
inline bool Transformation::has_power_op() const {
  return Type_case() == kPowerOp;
}
inline bool Transformation::_internal_has_power_op() const {
  return Type_case() == kPowerOp;
}
inline void Transformation::set_has_power_op() {
  _impl_._oneof_case_[0] = kPowerOp;
}
inline ::mojo::spec::PowerOp* PROTOBUF_NULLABLE Transformation::release_power_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.power_op)
  if (Type_case() == kPowerOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PowerOp*>(_impl_.Type_.power_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.power_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::PowerOp& Transformation::_internal_power_op() const {
  return Type_case() == kPowerOp ? static_cast<const ::mojo::spec::PowerOp&>(*reinterpret_cast<::mojo::spec::PowerOp*>(_impl_.Type_.power_op_))
                     : reinterpret_cast<const ::mojo::spec::PowerOp&>(::mojo::spec::_PowerOp_default_instance_);
}
inline const ::mojo::spec::PowerOp& Transformation::power_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.power_op)
  return _internal_power_op();
}
inline ::mojo::spec::PowerOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_power_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.power_op)
  if (Type_case() == kPowerOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PowerOp*>(_impl_.Type_.power_op_);
    _impl_.Type_.power_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_power_op(
    ::mojo::spec::PowerOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_power_op();
    _impl_.Type_.power_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.power_op)
}
inline ::mojo::spec::PowerOp* PROTOBUF_NONNULL Transformation::_internal_mutable_power_op() {
  if (Type_case() != kPowerOp) {
    clear_Type();
    set_has_power_op();
    _impl_.Type_.power_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::PowerOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::PowerOp*>(_impl_.Type_.power_op_);
}
inline ::mojo::spec::PowerOp* PROTOBUF_NONNULL Transformation::mutable_power_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::PowerOp* _msg = _internal_mutable_power_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.power_op)
  return _msg;
}

// .mojo.spec.LogOp log_op = 12;
inline bool Transformation::has_log_op() const {
  return Type_case() == kLogOp;
}
inline bool Transformation::_internal_has_log_op() const {
  return Type_case() == kLogOp;
}
inline void Transformation::set_has_log_op() {
  _impl_._oneof_case_[0] = kLogOp;
}
inline ::mojo::spec::LogOp* PROTOBUF_NULLABLE Transformation::release_log_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.log_op)
  if (Type_case() == kLogOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LogOp*>(_impl_.Type_.log_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.log_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::LogOp& Transformation::_internal_log_op() const {
  return Type_case() == kLogOp ? static_cast<const ::mojo::spec::LogOp&>(*reinterpret_cast<::mojo::spec::LogOp*>(_impl_.Type_.log_op_))
                     : reinterpret_cast<const ::mojo::spec::LogOp&>(::mojo::spec::_LogOp_default_instance_);
}
inline const ::mojo::spec::LogOp& Transformation::log_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.log_op)
  return _internal_log_op();
}
inline ::mojo::spec::LogOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_log_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.log_op)
  if (Type_case() == kLogOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LogOp*>(_impl_.Type_.log_op_);
    _impl_.Type_.log_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_log_op(
    ::mojo::spec::LogOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_log_op();
    _impl_.Type_.log_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.log_op)
}
inline ::mojo::spec::LogOp* PROTOBUF_NONNULL Transformation::_internal_mutable_log_op() {
  if (Type_case() != kLogOp) {
    clear_Type();
    set_has_log_op();
    _impl_.Type_.log_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::LogOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::LogOp*>(_impl_.Type_.log_op_);
}
inline ::mojo::spec::LogOp* PROTOBUF_NONNULL Transformation::mutable_log_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::LogOp* _msg = _internal_mutable_log_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.log_op)
  return _msg;
}

// .mojo.spec.SqrtOp sqrt_op = 13;
inline bool Transformation::has_sqrt_op() const {
  return Type_case() == kSqrtOp;
}
inline bool Transformation::_internal_has_sqrt_op() const {
  return Type_case() == kSqrtOp;
}
inline void Transformation::set_has_sqrt_op() {
  _impl_._oneof_case_[0] = kSqrtOp;
}
inline ::mojo::spec::SqrtOp* PROTOBUF_NULLABLE Transformation::release_sqrt_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.sqrt_op)
  if (Type_case() == kSqrtOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SqrtOp*>(_impl_.Type_.sqrt_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.sqrt_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::SqrtOp& Transformation::_internal_sqrt_op() const {
  return Type_case() == kSqrtOp ? static_cast<const ::mojo::spec::SqrtOp&>(*reinterpret_cast<::mojo::spec::SqrtOp*>(_impl_.Type_.sqrt_op_))
                     : reinterpret_cast<const ::mojo::spec::SqrtOp&>(::mojo::spec::_SqrtOp_default_instance_);
}
inline const ::mojo::spec::SqrtOp& Transformation::sqrt_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.sqrt_op)
  return _internal_sqrt_op();
}
inline ::mojo::spec::SqrtOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_sqrt_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.sqrt_op)
  if (Type_case() == kSqrtOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SqrtOp*>(_impl_.Type_.sqrt_op_);
    _impl_.Type_.sqrt_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_sqrt_op(
    ::mojo::spec::SqrtOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_sqrt_op();
    _impl_.Type_.sqrt_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.sqrt_op)
}
inline ::mojo::spec::SqrtOp* PROTOBUF_NONNULL Transformation::_internal_mutable_sqrt_op() {
  if (Type_case() != kSqrtOp) {
    clear_Type();
    set_has_sqrt_op();
    _impl_.Type_.sqrt_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::SqrtOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::SqrtOp*>(_impl_.Type_.sqrt_op_);
}
inline ::mojo::spec::SqrtOp* PROTOBUF_NONNULL Transformation::mutable_sqrt_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::SqrtOp* _msg = _internal_mutable_sqrt_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.sqrt_op)
  return _msg;
}

// .mojo.spec.SoftmaxOp softmax_op = 14;
inline bool Transformation::has_softmax_op() const {
  return Type_case() == kSoftmaxOp;
}
inline bool Transformation::_internal_has_softmax_op() const {
  return Type_case() == kSoftmaxOp;
}
inline void Transformation::set_has_softmax_op() {
  _impl_._oneof_case_[0] = kSoftmaxOp;
}
inline ::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE Transformation::release_softmax_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.softmax_op)
  if (Type_case() == kSoftmaxOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SoftmaxOp*>(_impl_.Type_.softmax_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.softmax_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::SoftmaxOp& Transformation::_internal_softmax_op() const {
  return Type_case() == kSoftmaxOp ? static_cast<const ::mojo::spec::SoftmaxOp&>(*reinterpret_cast<::mojo::spec::SoftmaxOp*>(_impl_.Type_.softmax_op_))
                     : reinterpret_cast<const ::mojo::spec::SoftmaxOp&>(::mojo::spec::_SoftmaxOp_default_instance_);
}
inline const ::mojo::spec::SoftmaxOp& Transformation::softmax_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.softmax_op)
  return _internal_softmax_op();
}
inline ::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_softmax_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.softmax_op)
  if (Type_case() == kSoftmaxOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::SoftmaxOp*>(_impl_.Type_.softmax_op_);
    _impl_.Type_.softmax_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_softmax_op(
    ::mojo::spec::SoftmaxOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_softmax_op();
    _impl_.Type_.softmax_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.softmax_op)
}
inline ::mojo::spec::SoftmaxOp* PROTOBUF_NONNULL Transformation::_internal_mutable_softmax_op() {
  if (Type_case() != kSoftmaxOp) {
    clear_Type();
    set_has_softmax_op();
    _impl_.Type_.softmax_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::SoftmaxOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::SoftmaxOp*>(_impl_.Type_.softmax_op_);
}
inline ::mojo::spec::SoftmaxOp* PROTOBUF_NONNULL Transformation::mutable_softmax_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::SoftmaxOp* _msg = _internal_mutable_softmax_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.softmax_op)
  return _msg;
}

// .mojo.spec.AggOp agg_op = 15;
inline bool Transformation::has_agg_op() const {
  return Type_case() == kAggOp;
}
inline bool Transformation::_internal_has_agg_op() const {
  return Type_case() == kAggOp;
}
inline void Transformation::set_has_agg_op() {
  _impl_._oneof_case_[0] = kAggOp;
}
inline ::mojo::spec::AggOp* PROTOBUF_NULLABLE Transformation::release_agg_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.agg_op)
  if (Type_case() == kAggOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::AggOp*>(_impl_.Type_.agg_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.agg_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::AggOp& Transformation::_internal_agg_op() const {
  return Type_case() == kAggOp ? static_cast<const ::mojo::spec::AggOp&>(*reinterpret_cast<::mojo::spec::AggOp*>(_impl_.Type_.agg_op_))
                     : reinterpret_cast<const ::mojo::spec::AggOp&>(::mojo::spec::_AggOp_default_instance_);
}
inline const ::mojo::spec::AggOp& Transformation::agg_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.agg_op)
  return _internal_agg_op();
}
inline ::mojo::spec::AggOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_agg_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.agg_op)
  if (Type_case() == kAggOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::AggOp*>(_impl_.Type_.agg_op_);
    _impl_.Type_.agg_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_agg_op(
    ::mojo::spec::AggOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_agg_op();
    _impl_.Type_.agg_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.agg_op)
}
inline ::mojo::spec::AggOp* PROTOBUF_NONNULL Transformation::_internal_mutable_agg_op() {
  if (Type_case() != kAggOp) {
    clear_Type();
    set_has_agg_op();
    _impl_.Type_.agg_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::AggOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::AggOp*>(_impl_.Type_.agg_op_);
}
inline ::mojo::spec::AggOp* PROTOBUF_NONNULL Transformation::mutable_agg_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::AggOp* _msg = _internal_mutable_agg_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.agg_op)
  return _msg;
}

// .mojo.spec.MedianOp median_op = 16;
inline bool Transformation::has_median_op() const {
  return Type_case() == kMedianOp;
}
inline bool Transformation::_internal_has_median_op() const {
  return Type_case() == kMedianOp;
}
inline void Transformation::set_has_median_op() {
  _impl_._oneof_case_[0] = kMedianOp;
}
inline ::mojo::spec::MedianOp* PROTOBUF_NULLABLE Transformation::release_median_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.median_op)
  if (Type_case() == kMedianOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MedianOp*>(_impl_.Type_.median_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.median_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::MedianOp& Transformation::_internal_median_op() const {
  return Type_case() == kMedianOp ? static_cast<const ::mojo::spec::MedianOp&>(*reinterpret_cast<::mojo::spec::MedianOp*>(_impl_.Type_.median_op_))
                     : reinterpret_cast<const ::mojo::spec::MedianOp&>(::mojo::spec::_MedianOp_default_instance_);
}
inline const ::mojo::spec::MedianOp& Transformation::median_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.median_op)
  return _internal_median_op();
}
inline ::mojo::spec::MedianOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_median_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.median_op)
  if (Type_case() == kMedianOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MedianOp*>(_impl_.Type_.median_op_);
    _impl_.Type_.median_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_median_op(
    ::mojo::spec::MedianOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_median_op();
    _impl_.Type_.median_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.median_op)
}
inline ::mojo::spec::MedianOp* PROTOBUF_NONNULL Transformation::_internal_mutable_median_op() {
  if (Type_case() != kMedianOp) {
    clear_Type();
    set_has_median_op();
    _impl_.Type_.median_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::MedianOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::MedianOp*>(_impl_.Type_.median_op_);
}
inline ::mojo::spec::MedianOp* PROTOBUF_NONNULL Transformation::mutable_median_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::MedianOp* _msg = _internal_mutable_median_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.median_op)
  return _msg;
}

// .mojo.spec.DatepartOp datepart_op = 17;
inline bool Transformation::has_datepart_op() const {
  return Type_case() == kDatepartOp;
}
inline bool Transformation::_internal_has_datepart_op() const {
  return Type_case() == kDatepartOp;
}
inline void Transformation::set_has_datepart_op() {
  _impl_._oneof_case_[0] = kDatepartOp;
}
inline ::mojo::spec::DatepartOp* PROTOBUF_NULLABLE Transformation::release_datepart_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.datepart_op)
  if (Type_case() == kDatepartOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::DatepartOp*>(_impl_.Type_.datepart_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.datepart_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::DatepartOp& Transformation::_internal_datepart_op() const {
  return Type_case() == kDatepartOp ? static_cast<const ::mojo::spec::DatepartOp&>(*reinterpret_cast<::mojo::spec::DatepartOp*>(_impl_.Type_.datepart_op_))
                     : reinterpret_cast<const ::mojo::spec::DatepartOp&>(::mojo::spec::_DatepartOp_default_instance_);
}
inline const ::mojo::spec::DatepartOp& Transformation::datepart_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.datepart_op)
  return _internal_datepart_op();
}
inline ::mojo::spec::DatepartOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_datepart_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.datepart_op)
  if (Type_case() == kDatepartOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::DatepartOp*>(_impl_.Type_.datepart_op_);
    _impl_.Type_.datepart_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_datepart_op(
    ::mojo::spec::DatepartOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_datepart_op();
    _impl_.Type_.datepart_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.datepart_op)
}
inline ::mojo::spec::DatepartOp* PROTOBUF_NONNULL Transformation::_internal_mutable_datepart_op() {
  if (Type_case() != kDatepartOp) {
    clear_Type();
    set_has_datepart_op();
    _impl_.Type_.datepart_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::DatepartOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::DatepartOp*>(_impl_.Type_.datepart_op_);
}
inline ::mojo::spec::DatepartOp* PROTOBUF_NONNULL Transformation::mutable_datepart_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::DatepartOp* _msg = _internal_mutable_datepart_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.datepart_op)
  return _msg;
}

// .mojo.spec.MomentOp moment_op = 18;
inline bool Transformation::has_moment_op() const {
  return Type_case() == kMomentOp;
}
inline bool Transformation::_internal_has_moment_op() const {
  return Type_case() == kMomentOp;
}
inline void Transformation::set_has_moment_op() {
  _impl_._oneof_case_[0] = kMomentOp;
}
inline ::mojo::spec::MomentOp* PROTOBUF_NULLABLE Transformation::release_moment_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.moment_op)
  if (Type_case() == kMomentOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MomentOp*>(_impl_.Type_.moment_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.moment_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::MomentOp& Transformation::_internal_moment_op() const {
  return Type_case() == kMomentOp ? static_cast<const ::mojo::spec::MomentOp&>(*reinterpret_cast<::mojo::spec::MomentOp*>(_impl_.Type_.moment_op_))
                     : reinterpret_cast<const ::mojo::spec::MomentOp&>(::mojo::spec::_MomentOp_default_instance_);
}
inline const ::mojo::spec::MomentOp& Transformation::moment_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.moment_op)
  return _internal_moment_op();
}
inline ::mojo::spec::MomentOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_moment_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.moment_op)
  if (Type_case() == kMomentOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MomentOp*>(_impl_.Type_.moment_op_);
    _impl_.Type_.moment_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_moment_op(
    ::mojo::spec::MomentOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_moment_op();
    _impl_.Type_.moment_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.moment_op)
}
inline ::mojo::spec::MomentOp* PROTOBUF_NONNULL Transformation::_internal_mutable_moment_op() {
  if (Type_case() != kMomentOp) {
    clear_Type();
    set_has_moment_op();
    _impl_.Type_.moment_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::MomentOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::MomentOp*>(_impl_.Type_.moment_op_);
}
inline ::mojo::spec::MomentOp* PROTOBUF_NONNULL Transformation::mutable_moment_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::MomentOp* _msg = _internal_mutable_moment_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.moment_op)
  return _msg;
}

// .mojo.spec.NormalizeOp normalize_op = 19;
inline bool Transformation::has_normalize_op() const {
  return Type_case() == kNormalizeOp;
}
inline bool Transformation::_internal_has_normalize_op() const {
  return Type_case() == kNormalizeOp;
}
inline void Transformation::set_has_normalize_op() {
  _impl_._oneof_case_[0] = kNormalizeOp;
}
inline ::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE Transformation::release_normalize_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.normalize_op)
  if (Type_case() == kNormalizeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::NormalizeOp*>(_impl_.Type_.normalize_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.normalize_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::NormalizeOp& Transformation::_internal_normalize_op() const {
  return Type_case() == kNormalizeOp ? static_cast<const ::mojo::spec::NormalizeOp&>(*reinterpret_cast<::mojo::spec::NormalizeOp*>(_impl_.Type_.normalize_op_))
                     : reinterpret_cast<const ::mojo::spec::NormalizeOp&>(::mojo::spec::_NormalizeOp_default_instance_);
}
inline const ::mojo::spec::NormalizeOp& Transformation::normalize_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.normalize_op)
  return _internal_normalize_op();
}
inline ::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_normalize_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.normalize_op)
  if (Type_case() == kNormalizeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::NormalizeOp*>(_impl_.Type_.normalize_op_);
    _impl_.Type_.normalize_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_normalize_op(
    ::mojo::spec::NormalizeOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_normalize_op();
    _impl_.Type_.normalize_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.normalize_op)
}
inline ::mojo::spec::NormalizeOp* PROTOBUF_NONNULL Transformation::_internal_mutable_normalize_op() {
  if (Type_case() != kNormalizeOp) {
    clear_Type();
    set_has_normalize_op();
    _impl_.Type_.normalize_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::NormalizeOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::NormalizeOp*>(_impl_.Type_.normalize_op_);
}
inline ::mojo::spec::NormalizeOp* PROTOBUF_NONNULL Transformation::mutable_normalize_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::NormalizeOp* _msg = _internal_mutable_normalize_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.normalize_op)
  return _msg;
}

// .mojo.spec.IsNaOp is_na_op = 20;
inline bool Transformation::has_is_na_op() const {
  return Type_case() == kIsNaOp;
}
inline bool Transformation::_internal_has_is_na_op() const {
  return Type_case() == kIsNaOp;
}
inline void Transformation::set_has_is_na_op() {
  _impl_._oneof_case_[0] = kIsNaOp;
}
inline ::mojo::spec::IsNaOp* PROTOBUF_NULLABLE Transformation::release_is_na_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.is_na_op)
  if (Type_case() == kIsNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IsNaOp*>(_impl_.Type_.is_na_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.is_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::IsNaOp& Transformation::_internal_is_na_op() const {
  return Type_case() == kIsNaOp ? static_cast<const ::mojo::spec::IsNaOp&>(*reinterpret_cast<::mojo::spec::IsNaOp*>(_impl_.Type_.is_na_op_))
                     : reinterpret_cast<const ::mojo::spec::IsNaOp&>(::mojo::spec::_IsNaOp_default_instance_);
}
inline const ::mojo::spec::IsNaOp& Transformation::is_na_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.is_na_op)
  return _internal_is_na_op();
}
inline ::mojo::spec::IsNaOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_is_na_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.is_na_op)
  if (Type_case() == kIsNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IsNaOp*>(_impl_.Type_.is_na_op_);
    _impl_.Type_.is_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_is_na_op(
    ::mojo::spec::IsNaOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_is_na_op();
    _impl_.Type_.is_na_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.is_na_op)
}
inline ::mojo::spec::IsNaOp* PROTOBUF_NONNULL Transformation::_internal_mutable_is_na_op() {
  if (Type_case() != kIsNaOp) {
    clear_Type();
    set_has_is_na_op();
    _impl_.Type_.is_na_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::IsNaOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::IsNaOp*>(_impl_.Type_.is_na_op_);
}
inline ::mojo::spec::IsNaOp* PROTOBUF_NONNULL Transformation::mutable_is_na_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::IsNaOp* _msg = _internal_mutable_is_na_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.is_na_op)
  return _msg;
}

// .mojo.spec.FillNaOp fill_na_op = 21;
inline bool Transformation::has_fill_na_op() const {
  return Type_case() == kFillNaOp;
}
inline bool Transformation::_internal_has_fill_na_op() const {
  return Type_case() == kFillNaOp;
}
inline void Transformation::set_has_fill_na_op() {
  _impl_._oneof_case_[0] = kFillNaOp;
}
inline ::mojo::spec::FillNaOp* PROTOBUF_NULLABLE Transformation::release_fill_na_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.fill_na_op)
  if (Type_case() == kFillNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::FillNaOp*>(_impl_.Type_.fill_na_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.fill_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::FillNaOp& Transformation::_internal_fill_na_op() const {
  return Type_case() == kFillNaOp ? static_cast<const ::mojo::spec::FillNaOp&>(*reinterpret_cast<::mojo::spec::FillNaOp*>(_impl_.Type_.fill_na_op_))
                     : reinterpret_cast<const ::mojo::spec::FillNaOp&>(::mojo::spec::_FillNaOp_default_instance_);
}
inline const ::mojo::spec::FillNaOp& Transformation::fill_na_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.fill_na_op)
  return _internal_fill_na_op();
}
inline ::mojo::spec::FillNaOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_fill_na_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.fill_na_op)
  if (Type_case() == kFillNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::FillNaOp*>(_impl_.Type_.fill_na_op_);
    _impl_.Type_.fill_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_fill_na_op(
    ::mojo::spec::FillNaOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_fill_na_op();
    _impl_.Type_.fill_na_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.fill_na_op)
}
inline ::mojo::spec::FillNaOp* PROTOBUF_NONNULL Transformation::_internal_mutable_fill_na_op() {
  if (Type_case() != kFillNaOp) {
    clear_Type();
    set_has_fill_na_op();
    _impl_.Type_.fill_na_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::FillNaOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::FillNaOp*>(_impl_.Type_.fill_na_op_);
}
inline ::mojo::spec::FillNaOp* PROTOBUF_NONNULL Transformation::mutable_fill_na_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::FillNaOp* _msg = _internal_mutable_fill_na_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.fill_na_op)
  return _msg;
}

// .mojo.spec.ImputeNaOp impute_na_op = 22;
inline bool Transformation::has_impute_na_op() const {
  return Type_case() == kImputeNaOp;
}
inline bool Transformation::_internal_has_impute_na_op() const {
  return Type_case() == kImputeNaOp;
}
inline void Transformation::set_has_impute_na_op() {
  _impl_._oneof_case_[0] = kImputeNaOp;
}
inline ::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE Transformation::release_impute_na_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.impute_na_op)
  if (Type_case() == kImputeNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImputeNaOp*>(_impl_.Type_.impute_na_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.impute_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImputeNaOp& Transformation::_internal_impute_na_op() const {
  return Type_case() == kImputeNaOp ? static_cast<const ::mojo::spec::ImputeNaOp&>(*reinterpret_cast<::mojo::spec::ImputeNaOp*>(_impl_.Type_.impute_na_op_))
                     : reinterpret_cast<const ::mojo::spec::ImputeNaOp&>(::mojo::spec::_ImputeNaOp_default_instance_);
}
inline const ::mojo::spec::ImputeNaOp& Transformation::impute_na_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.impute_na_op)
  return _internal_impute_na_op();
}
inline ::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_impute_na_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.impute_na_op)
  if (Type_case() == kImputeNaOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImputeNaOp*>(_impl_.Type_.impute_na_op_);
    _impl_.Type_.impute_na_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_impute_na_op(
    ::mojo::spec::ImputeNaOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_impute_na_op();
    _impl_.Type_.impute_na_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.impute_na_op)
}
inline ::mojo::spec::ImputeNaOp* PROTOBUF_NONNULL Transformation::_internal_mutable_impute_na_op() {
  if (Type_case() != kImputeNaOp) {
    clear_Type();
    set_has_impute_na_op();
    _impl_.Type_.impute_na_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImputeNaOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImputeNaOp*>(_impl_.Type_.impute_na_op_);
}
inline ::mojo::spec::ImputeNaOp* PROTOBUF_NONNULL Transformation::mutable_impute_na_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImputeNaOp* _msg = _internal_mutable_impute_na_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.impute_na_op)
  return _msg;
}

// .mojo.spec.ClipOp clip_op = 23;
inline bool Transformation::has_clip_op() const {
  return Type_case() == kClipOp;
}
inline bool Transformation::_internal_has_clip_op() const {
  return Type_case() == kClipOp;
}
inline void Transformation::set_has_clip_op() {
  _impl_._oneof_case_[0] = kClipOp;
}
inline ::mojo::spec::ClipOp* PROTOBUF_NULLABLE Transformation::release_clip_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.clip_op)
  if (Type_case() == kClipOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ClipOp*>(_impl_.Type_.clip_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.clip_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ClipOp& Transformation::_internal_clip_op() const {
  return Type_case() == kClipOp ? static_cast<const ::mojo::spec::ClipOp&>(*reinterpret_cast<::mojo::spec::ClipOp*>(_impl_.Type_.clip_op_))
                     : reinterpret_cast<const ::mojo::spec::ClipOp&>(::mojo::spec::_ClipOp_default_instance_);
}
inline const ::mojo::spec::ClipOp& Transformation::clip_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.clip_op)
  return _internal_clip_op();
}
inline ::mojo::spec::ClipOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_clip_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.clip_op)
  if (Type_case() == kClipOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ClipOp*>(_impl_.Type_.clip_op_);
    _impl_.Type_.clip_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_clip_op(
    ::mojo::spec::ClipOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_clip_op();
    _impl_.Type_.clip_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.clip_op)
}
inline ::mojo::spec::ClipOp* PROTOBUF_NONNULL Transformation::_internal_mutable_clip_op() {
  if (Type_case() != kClipOp) {
    clear_Type();
    set_has_clip_op();
    _impl_.Type_.clip_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ClipOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ClipOp*>(_impl_.Type_.clip_op_);
}
inline ::mojo::spec::ClipOp* PROTOBUF_NONNULL Transformation::mutable_clip_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ClipOp* _msg = _internal_mutable_clip_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.clip_op)
  return _msg;
}

// .mojo.spec.KMeansOp kmeans_op = 24;
inline bool Transformation::has_kmeans_op() const {
  return Type_case() == kKmeansOp;
}
inline bool Transformation::_internal_has_kmeans_op() const {
  return Type_case() == kKmeansOp;
}
inline void Transformation::set_has_kmeans_op() {
  _impl_._oneof_case_[0] = kKmeansOp;
}
inline ::mojo::spec::KMeansOp* PROTOBUF_NULLABLE Transformation::release_kmeans_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.kmeans_op)
  if (Type_case() == kKmeansOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::KMeansOp*>(_impl_.Type_.kmeans_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.kmeans_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::KMeansOp& Transformation::_internal_kmeans_op() const {
  return Type_case() == kKmeansOp ? static_cast<const ::mojo::spec::KMeansOp&>(*reinterpret_cast<::mojo::spec::KMeansOp*>(_impl_.Type_.kmeans_op_))
                     : reinterpret_cast<const ::mojo::spec::KMeansOp&>(::mojo::spec::_KMeansOp_default_instance_);
}
inline const ::mojo::spec::KMeansOp& Transformation::kmeans_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.kmeans_op)
  return _internal_kmeans_op();
}
inline ::mojo::spec::KMeansOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_kmeans_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.kmeans_op)
  if (Type_case() == kKmeansOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::KMeansOp*>(_impl_.Type_.kmeans_op_);
    _impl_.Type_.kmeans_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_kmeans_op(
    ::mojo::spec::KMeansOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_kmeans_op();
    _impl_.Type_.kmeans_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.kmeans_op)
}
inline ::mojo::spec::KMeansOp* PROTOBUF_NONNULL Transformation::_internal_mutable_kmeans_op() {
  if (Type_case() != kKmeansOp) {
    clear_Type();
    set_has_kmeans_op();
    _impl_.Type_.kmeans_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::KMeansOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::KMeansOp*>(_impl_.Type_.kmeans_op_);
}
inline ::mojo::spec::KMeansOp* PROTOBUF_NONNULL Transformation::mutable_kmeans_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::KMeansOp* _msg = _internal_mutable_kmeans_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.kmeans_op)
  return _msg;
}

// .mojo.spec.MatrixProductOp matrix_product_op = 25;
inline bool Transformation::has_matrix_product_op() const {
  return Type_case() == kMatrixProductOp;
}
inline bool Transformation::_internal_has_matrix_product_op() const {
  return Type_case() == kMatrixProductOp;
}
inline void Transformation::set_has_matrix_product_op() {
  _impl_._oneof_case_[0] = kMatrixProductOp;
}
inline ::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE Transformation::release_matrix_product_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.matrix_product_op)
  if (Type_case() == kMatrixProductOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MatrixProductOp*>(_impl_.Type_.matrix_product_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.matrix_product_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::MatrixProductOp& Transformation::_internal_matrix_product_op() const {
  return Type_case() == kMatrixProductOp ? static_cast<const ::mojo::spec::MatrixProductOp&>(*reinterpret_cast<::mojo::spec::MatrixProductOp*>(_impl_.Type_.matrix_product_op_))
                     : reinterpret_cast<const ::mojo::spec::MatrixProductOp&>(::mojo::spec::_MatrixProductOp_default_instance_);
}
inline const ::mojo::spec::MatrixProductOp& Transformation::matrix_product_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.matrix_product_op)
  return _internal_matrix_product_op();
}
inline ::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_matrix_product_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.matrix_product_op)
  if (Type_case() == kMatrixProductOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MatrixProductOp*>(_impl_.Type_.matrix_product_op_);
    _impl_.Type_.matrix_product_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_matrix_product_op(
    ::mojo::spec::MatrixProductOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_matrix_product_op();
    _impl_.Type_.matrix_product_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.matrix_product_op)
}
inline ::mojo::spec::MatrixProductOp* PROTOBUF_NONNULL Transformation::_internal_mutable_matrix_product_op() {
  if (Type_case() != kMatrixProductOp) {
    clear_Type();
    set_has_matrix_product_op();
    _impl_.Type_.matrix_product_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::MatrixProductOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::MatrixProductOp*>(_impl_.Type_.matrix_product_op_);
}
inline ::mojo::spec::MatrixProductOp* PROTOBUF_NONNULL Transformation::mutable_matrix_product_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::MatrixProductOp* _msg = _internal_mutable_matrix_product_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.matrix_product_op)
  return _msg;
}

// .mojo.spec.CountVectorizerOp count_vectorizer_op = 26;
inline bool Transformation::has_count_vectorizer_op() const {
  return Type_case() == kCountVectorizerOp;
}
inline bool Transformation::_internal_has_count_vectorizer_op() const {
  return Type_case() == kCountVectorizerOp;
}
inline void Transformation::set_has_count_vectorizer_op() {
  _impl_._oneof_case_[0] = kCountVectorizerOp;
}
inline ::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE Transformation::release_count_vectorizer_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.count_vectorizer_op)
  if (Type_case() == kCountVectorizerOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CountVectorizerOp*>(_impl_.Type_.count_vectorizer_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.count_vectorizer_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::CountVectorizerOp& Transformation::_internal_count_vectorizer_op() const {
  return Type_case() == kCountVectorizerOp ? static_cast<const ::mojo::spec::CountVectorizerOp&>(*reinterpret_cast<::mojo::spec::CountVectorizerOp*>(_impl_.Type_.count_vectorizer_op_))
                     : reinterpret_cast<const ::mojo::spec::CountVectorizerOp&>(::mojo::spec::_CountVectorizerOp_default_instance_);
}
inline const ::mojo::spec::CountVectorizerOp& Transformation::count_vectorizer_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.count_vectorizer_op)
  return _internal_count_vectorizer_op();
}
inline ::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_count_vectorizer_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.count_vectorizer_op)
  if (Type_case() == kCountVectorizerOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CountVectorizerOp*>(_impl_.Type_.count_vectorizer_op_);
    _impl_.Type_.count_vectorizer_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_count_vectorizer_op(
    ::mojo::spec::CountVectorizerOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_count_vectorizer_op();
    _impl_.Type_.count_vectorizer_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.count_vectorizer_op)
}
inline ::mojo::spec::CountVectorizerOp* PROTOBUF_NONNULL Transformation::_internal_mutable_count_vectorizer_op() {
  if (Type_case() != kCountVectorizerOp) {
    clear_Type();
    set_has_count_vectorizer_op();
    _impl_.Type_.count_vectorizer_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::CountVectorizerOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::CountVectorizerOp*>(_impl_.Type_.count_vectorizer_op_);
}
inline ::mojo::spec::CountVectorizerOp* PROTOBUF_NONNULL Transformation::mutable_count_vectorizer_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::CountVectorizerOp* _msg = _internal_mutable_count_vectorizer_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.count_vectorizer_op)
  return _msg;
}

// .mojo.spec.ReplaceOp replace_op = 27;
inline bool Transformation::has_replace_op() const {
  return Type_case() == kReplaceOp;
}
inline bool Transformation::_internal_has_replace_op() const {
  return Type_case() == kReplaceOp;
}
inline void Transformation::set_has_replace_op() {
  _impl_._oneof_case_[0] = kReplaceOp;
}
inline ::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE Transformation::release_replace_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.replace_op)
  if (Type_case() == kReplaceOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ReplaceOp*>(_impl_.Type_.replace_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.replace_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ReplaceOp& Transformation::_internal_replace_op() const {
  return Type_case() == kReplaceOp ? static_cast<const ::mojo::spec::ReplaceOp&>(*reinterpret_cast<::mojo::spec::ReplaceOp*>(_impl_.Type_.replace_op_))
                     : reinterpret_cast<const ::mojo::spec::ReplaceOp&>(::mojo::spec::_ReplaceOp_default_instance_);
}
inline const ::mojo::spec::ReplaceOp& Transformation::replace_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.replace_op)
  return _internal_replace_op();
}
inline ::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_replace_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.replace_op)
  if (Type_case() == kReplaceOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ReplaceOp*>(_impl_.Type_.replace_op_);
    _impl_.Type_.replace_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_replace_op(
    ::mojo::spec::ReplaceOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_replace_op();
    _impl_.Type_.replace_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.replace_op)
}
inline ::mojo::spec::ReplaceOp* PROTOBUF_NONNULL Transformation::_internal_mutable_replace_op() {
  if (Type_case() != kReplaceOp) {
    clear_Type();
    set_has_replace_op();
    _impl_.Type_.replace_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ReplaceOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ReplaceOp*>(_impl_.Type_.replace_op_);
}
inline ::mojo::spec::ReplaceOp* PROTOBUF_NONNULL Transformation::mutable_replace_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ReplaceOp* _msg = _internal_mutable_replace_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.replace_op)
  return _msg;
}

// .mojo.spec.IntervalMapOp interval_map_op = 28;
inline bool Transformation::has_interval_map_op() const {
  return Type_case() == kIntervalMapOp;
}
inline bool Transformation::_internal_has_interval_map_op() const {
  return Type_case() == kIntervalMapOp;
}
inline void Transformation::set_has_interval_map_op() {
  _impl_._oneof_case_[0] = kIntervalMapOp;
}
inline ::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE Transformation::release_interval_map_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.interval_map_op)
  if (Type_case() == kIntervalMapOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IntervalMapOp*>(_impl_.Type_.interval_map_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.interval_map_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::IntervalMapOp& Transformation::_internal_interval_map_op() const {
  return Type_case() == kIntervalMapOp ? static_cast<const ::mojo::spec::IntervalMapOp&>(*reinterpret_cast<::mojo::spec::IntervalMapOp*>(_impl_.Type_.interval_map_op_))
                     : reinterpret_cast<const ::mojo::spec::IntervalMapOp&>(::mojo::spec::_IntervalMapOp_default_instance_);
}
inline const ::mojo::spec::IntervalMapOp& Transformation::interval_map_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.interval_map_op)
  return _internal_interval_map_op();
}
inline ::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_interval_map_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.interval_map_op)
  if (Type_case() == kIntervalMapOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IntervalMapOp*>(_impl_.Type_.interval_map_op_);
    _impl_.Type_.interval_map_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_interval_map_op(
    ::mojo::spec::IntervalMapOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_interval_map_op();
    _impl_.Type_.interval_map_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.interval_map_op)
}
inline ::mojo::spec::IntervalMapOp* PROTOBUF_NONNULL Transformation::_internal_mutable_interval_map_op() {
  if (Type_case() != kIntervalMapOp) {
    clear_Type();
    set_has_interval_map_op();
    _impl_.Type_.interval_map_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::IntervalMapOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::IntervalMapOp*>(_impl_.Type_.interval_map_op_);
}
inline ::mojo::spec::IntervalMapOp* PROTOBUF_NONNULL Transformation::mutable_interval_map_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::IntervalMapOp* _msg = _internal_mutable_interval_map_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.interval_map_op)
  return _msg;
}

// .mojo.spec.MapOp map_op = 29;
inline bool Transformation::has_map_op() const {
  return Type_case() == kMapOp;
}
inline bool Transformation::_internal_has_map_op() const {
  return Type_case() == kMapOp;
}
inline void Transformation::set_has_map_op() {
  _impl_._oneof_case_[0] = kMapOp;
}
inline ::mojo::spec::MapOp* PROTOBUF_NULLABLE Transformation::release_map_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.map_op)
  if (Type_case() == kMapOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MapOp*>(_impl_.Type_.map_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.map_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::MapOp& Transformation::_internal_map_op() const {
  return Type_case() == kMapOp ? static_cast<const ::mojo::spec::MapOp&>(*reinterpret_cast<::mojo::spec::MapOp*>(_impl_.Type_.map_op_))
                     : reinterpret_cast<const ::mojo::spec::MapOp&>(::mojo::spec::_MapOp_default_instance_);
}
inline const ::mojo::spec::MapOp& Transformation::map_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.map_op)
  return _internal_map_op();
}
inline ::mojo::spec::MapOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_map_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.map_op)
  if (Type_case() == kMapOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::MapOp*>(_impl_.Type_.map_op_);
    _impl_.Type_.map_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_map_op(
    ::mojo::spec::MapOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_map_op();
    _impl_.Type_.map_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.map_op)
}
inline ::mojo::spec::MapOp* PROTOBUF_NONNULL Transformation::_internal_mutable_map_op() {
  if (Type_case() != kMapOp) {
    clear_Type();
    set_has_map_op();
    _impl_.Type_.map_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::MapOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::MapOp*>(_impl_.Type_.map_op_);
}
inline ::mojo::spec::MapOp* PROTOBUF_NONNULL Transformation::mutable_map_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::MapOp* _msg = _internal_mutable_map_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.map_op)
  return _msg;
}

// .mojo.spec.ExecPipeOp exec_pipe_op = 30;
inline bool Transformation::has_exec_pipe_op() const {
  return Type_case() == kExecPipeOp;
}
inline bool Transformation::_internal_has_exec_pipe_op() const {
  return Type_case() == kExecPipeOp;
}
inline void Transformation::set_has_exec_pipe_op() {
  _impl_._oneof_case_[0] = kExecPipeOp;
}
inline void Transformation::clear_exec_pipe_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kExecPipeOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.exec_pipe_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.exec_pipe_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE Transformation::release_exec_pipe_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.exec_pipe_op)
  if (Type_case() == kExecPipeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExecPipeOp*>(_impl_.Type_.exec_pipe_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.exec_pipe_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ExecPipeOp& Transformation::_internal_exec_pipe_op() const {
  return Type_case() == kExecPipeOp ? static_cast<const ::mojo::spec::ExecPipeOp&>(*reinterpret_cast<::mojo::spec::ExecPipeOp*>(_impl_.Type_.exec_pipe_op_))
                     : reinterpret_cast<const ::mojo::spec::ExecPipeOp&>(::mojo::spec::_ExecPipeOp_default_instance_);
}
inline const ::mojo::spec::ExecPipeOp& Transformation::exec_pipe_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.exec_pipe_op)
  return _internal_exec_pipe_op();
}
inline ::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_exec_pipe_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.exec_pipe_op)
  if (Type_case() == kExecPipeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ExecPipeOp*>(_impl_.Type_.exec_pipe_op_);
    _impl_.Type_.exec_pipe_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_exec_pipe_op(
    ::mojo::spec::ExecPipeOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_exec_pipe_op();
    _impl_.Type_.exec_pipe_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.exec_pipe_op)
}
inline ::mojo::spec::ExecPipeOp* PROTOBUF_NONNULL Transformation::_internal_mutable_exec_pipe_op() {
  if (Type_case() != kExecPipeOp) {
    clear_Type();
    set_has_exec_pipe_op();
    _impl_.Type_.exec_pipe_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ExecPipeOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ExecPipeOp*>(_impl_.Type_.exec_pipe_op_);
}
inline ::mojo::spec::ExecPipeOp* PROTOBUF_NONNULL Transformation::mutable_exec_pipe_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ExecPipeOp* _msg = _internal_mutable_exec_pipe_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.exec_pipe_op)
  return _msg;
}

// .mojo.spec.XGBoostOp xgb_op = 31;
inline bool Transformation::has_xgb_op() const {
  return Type_case() == kXgbOp;
}
inline bool Transformation::_internal_has_xgb_op() const {
  return Type_case() == kXgbOp;
}
inline void Transformation::set_has_xgb_op() {
  _impl_._oneof_case_[0] = kXgbOp;
}
inline void Transformation::clear_xgb_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kXgbOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.xgb_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.xgb_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE Transformation::release_xgb_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.xgb_op)
  if (Type_case() == kXgbOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::XGBoostOp*>(_impl_.Type_.xgb_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.xgb_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::XGBoostOp& Transformation::_internal_xgb_op() const {
  return Type_case() == kXgbOp ? static_cast<const ::mojo::spec::XGBoostOp&>(*reinterpret_cast<::mojo::spec::XGBoostOp*>(_impl_.Type_.xgb_op_))
                     : reinterpret_cast<const ::mojo::spec::XGBoostOp&>(::mojo::spec::_XGBoostOp_default_instance_);
}
inline const ::mojo::spec::XGBoostOp& Transformation::xgb_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.xgb_op)
  return _internal_xgb_op();
}
inline ::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_xgb_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.xgb_op)
  if (Type_case() == kXgbOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::XGBoostOp*>(_impl_.Type_.xgb_op_);
    _impl_.Type_.xgb_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_xgb_op(
    ::mojo::spec::XGBoostOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_xgb_op();
    _impl_.Type_.xgb_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.xgb_op)
}
inline ::mojo::spec::XGBoostOp* PROTOBUF_NONNULL Transformation::_internal_mutable_xgb_op() {
  if (Type_case() != kXgbOp) {
    clear_Type();
    set_has_xgb_op();
    _impl_.Type_.xgb_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::XGBoostOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::XGBoostOp*>(_impl_.Type_.xgb_op_);
}
inline ::mojo::spec::XGBoostOp* PROTOBUF_NONNULL Transformation::mutable_xgb_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::XGBoostOp* _msg = _internal_mutable_xgb_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.xgb_op)
  return _msg;
}

// .mojo.spec.LightGBMOp lgbm_op = 32;
inline bool Transformation::has_lgbm_op() const {
  return Type_case() == kLgbmOp;
}
inline bool Transformation::_internal_has_lgbm_op() const {
  return Type_case() == kLgbmOp;
}
inline void Transformation::set_has_lgbm_op() {
  _impl_._oneof_case_[0] = kLgbmOp;
}
inline void Transformation::clear_lgbm_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kLgbmOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.lgbm_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.lgbm_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE Transformation::release_lgbm_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.lgbm_op)
  if (Type_case() == kLgbmOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LightGBMOp*>(_impl_.Type_.lgbm_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.lgbm_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::LightGBMOp& Transformation::_internal_lgbm_op() const {
  return Type_case() == kLgbmOp ? static_cast<const ::mojo::spec::LightGBMOp&>(*reinterpret_cast<::mojo::spec::LightGBMOp*>(_impl_.Type_.lgbm_op_))
                     : reinterpret_cast<const ::mojo::spec::LightGBMOp&>(::mojo::spec::_LightGBMOp_default_instance_);
}
inline const ::mojo::spec::LightGBMOp& Transformation::lgbm_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.lgbm_op)
  return _internal_lgbm_op();
}
inline ::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_lgbm_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.lgbm_op)
  if (Type_case() == kLgbmOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LightGBMOp*>(_impl_.Type_.lgbm_op_);
    _impl_.Type_.lgbm_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_lgbm_op(
    ::mojo::spec::LightGBMOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_lgbm_op();
    _impl_.Type_.lgbm_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.lgbm_op)
}
inline ::mojo::spec::LightGBMOp* PROTOBUF_NONNULL Transformation::_internal_mutable_lgbm_op() {
  if (Type_case() != kLgbmOp) {
    clear_Type();
    set_has_lgbm_op();
    _impl_.Type_.lgbm_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::LightGBMOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::LightGBMOp*>(_impl_.Type_.lgbm_op_);
}
inline ::mojo::spec::LightGBMOp* PROTOBUF_NONNULL Transformation::mutable_lgbm_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::LightGBMOp* _msg = _internal_mutable_lgbm_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.lgbm_op)
  return _msg;
}

// .mojo.spec.NewColumnOp new_col_op = 33;
inline bool Transformation::has_new_col_op() const {
  return Type_case() == kNewColOp;
}
inline bool Transformation::_internal_has_new_col_op() const {
  return Type_case() == kNewColOp;
}
inline void Transformation::set_has_new_col_op() {
  _impl_._oneof_case_[0] = kNewColOp;
}
inline ::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE Transformation::release_new_col_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.new_col_op)
  if (Type_case() == kNewColOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::NewColumnOp*>(_impl_.Type_.new_col_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.new_col_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::NewColumnOp& Transformation::_internal_new_col_op() const {
  return Type_case() == kNewColOp ? static_cast<const ::mojo::spec::NewColumnOp&>(*reinterpret_cast<::mojo::spec::NewColumnOp*>(_impl_.Type_.new_col_op_))
                     : reinterpret_cast<const ::mojo::spec::NewColumnOp&>(::mojo::spec::_NewColumnOp_default_instance_);
}
inline const ::mojo::spec::NewColumnOp& Transformation::new_col_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.new_col_op)
  return _internal_new_col_op();
}
inline ::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_new_col_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.new_col_op)
  if (Type_case() == kNewColOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::NewColumnOp*>(_impl_.Type_.new_col_op_);
    _impl_.Type_.new_col_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_new_col_op(
    ::mojo::spec::NewColumnOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_new_col_op();
    _impl_.Type_.new_col_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.new_col_op)
}
inline ::mojo::spec::NewColumnOp* PROTOBUF_NONNULL Transformation::_internal_mutable_new_col_op() {
  if (Type_case() != kNewColOp) {
    clear_Type();
    set_has_new_col_op();
    _impl_.Type_.new_col_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::NewColumnOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::NewColumnOp*>(_impl_.Type_.new_col_op_);
}
inline ::mojo::spec::NewColumnOp* PROTOBUF_NONNULL Transformation::mutable_new_col_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::NewColumnOp* _msg = _internal_mutable_new_col_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.new_col_op)
  return _msg;
}

// .mojo.spec.TensorFlowOp tf_op = 34;
inline bool Transformation::has_tf_op() const {
  return Type_case() == kTfOp;
}
inline bool Transformation::_internal_has_tf_op() const {
  return Type_case() == kTfOp;
}
inline void Transformation::set_has_tf_op() {
  _impl_._oneof_case_[0] = kTfOp;
}
inline void Transformation::clear_tf_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kTfOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.tf_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.tf_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE Transformation::release_tf_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.tf_op)
  if (Type_case() == kTfOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::TensorFlowOp*>(_impl_.Type_.tf_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.tf_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::TensorFlowOp& Transformation::_internal_tf_op() const {
  return Type_case() == kTfOp ? static_cast<const ::mojo::spec::TensorFlowOp&>(*reinterpret_cast<::mojo::spec::TensorFlowOp*>(_impl_.Type_.tf_op_))
                     : reinterpret_cast<const ::mojo::spec::TensorFlowOp&>(::mojo::spec::_TensorFlowOp_default_instance_);
}
inline const ::mojo::spec::TensorFlowOp& Transformation::tf_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.tf_op)
  return _internal_tf_op();
}
inline ::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_tf_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.tf_op)
  if (Type_case() == kTfOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::TensorFlowOp*>(_impl_.Type_.tf_op_);
    _impl_.Type_.tf_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_tf_op(
    ::mojo::spec::TensorFlowOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_tf_op();
    _impl_.Type_.tf_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.tf_op)
}
inline ::mojo::spec::TensorFlowOp* PROTOBUF_NONNULL Transformation::_internal_mutable_tf_op() {
  if (Type_case() != kTfOp) {
    clear_Type();
    set_has_tf_op();
    _impl_.Type_.tf_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::TensorFlowOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::TensorFlowOp*>(_impl_.Type_.tf_op_);
}
inline ::mojo::spec::TensorFlowOp* PROTOBUF_NONNULL Transformation::mutable_tf_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::TensorFlowOp* _msg = _internal_mutable_tf_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.tf_op)
  return _msg;
}

// .mojo.spec.KerasTokenizerOp keras_token_op = 35;
inline bool Transformation::has_keras_token_op() const {
  return Type_case() == kKerasTokenOp;
}
inline bool Transformation::_internal_has_keras_token_op() const {
  return Type_case() == kKerasTokenOp;
}
inline void Transformation::set_has_keras_token_op() {
  _impl_._oneof_case_[0] = kKerasTokenOp;
}
inline ::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE Transformation::release_keras_token_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.keras_token_op)
  if (Type_case() == kKerasTokenOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::KerasTokenizerOp*>(_impl_.Type_.keras_token_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.keras_token_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::KerasTokenizerOp& Transformation::_internal_keras_token_op() const {
  return Type_case() == kKerasTokenOp ? static_cast<const ::mojo::spec::KerasTokenizerOp&>(*reinterpret_cast<::mojo::spec::KerasTokenizerOp*>(_impl_.Type_.keras_token_op_))
                     : reinterpret_cast<const ::mojo::spec::KerasTokenizerOp&>(::mojo::spec::_KerasTokenizerOp_default_instance_);
}
inline const ::mojo::spec::KerasTokenizerOp& Transformation::keras_token_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.keras_token_op)
  return _internal_keras_token_op();
}
inline ::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_keras_token_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.keras_token_op)
  if (Type_case() == kKerasTokenOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::KerasTokenizerOp*>(_impl_.Type_.keras_token_op_);
    _impl_.Type_.keras_token_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_keras_token_op(
    ::mojo::spec::KerasTokenizerOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_keras_token_op();
    _impl_.Type_.keras_token_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.keras_token_op)
}
inline ::mojo::spec::KerasTokenizerOp* PROTOBUF_NONNULL Transformation::_internal_mutable_keras_token_op() {
  if (Type_case() != kKerasTokenOp) {
    clear_Type();
    set_has_keras_token_op();
    _impl_.Type_.keras_token_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::KerasTokenizerOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::KerasTokenizerOp*>(_impl_.Type_.keras_token_op_);
}
inline ::mojo::spec::KerasTokenizerOp* PROTOBUF_NONNULL Transformation::mutable_keras_token_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::KerasTokenizerOp* _msg = _internal_mutable_keras_token_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.keras_token_op)
  return _msg;
}

// .mojo.spec.FtrlOp ftrl_op = 36;
inline bool Transformation::has_ftrl_op() const {
  return Type_case() == kFtrlOp;
}
inline bool Transformation::_internal_has_ftrl_op() const {
  return Type_case() == kFtrlOp;
}
inline void Transformation::set_has_ftrl_op() {
  _impl_._oneof_case_[0] = kFtrlOp;
}
inline ::mojo::spec::FtrlOp* PROTOBUF_NULLABLE Transformation::release_ftrl_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.ftrl_op)
  if (Type_case() == kFtrlOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::FtrlOp*>(_impl_.Type_.ftrl_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.ftrl_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::FtrlOp& Transformation::_internal_ftrl_op() const {
  return Type_case() == kFtrlOp ? static_cast<const ::mojo::spec::FtrlOp&>(*reinterpret_cast<::mojo::spec::FtrlOp*>(_impl_.Type_.ftrl_op_))
                     : reinterpret_cast<const ::mojo::spec::FtrlOp&>(::mojo::spec::_FtrlOp_default_instance_);
}
inline const ::mojo::spec::FtrlOp& Transformation::ftrl_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.ftrl_op)
  return _internal_ftrl_op();
}
inline ::mojo::spec::FtrlOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_ftrl_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.ftrl_op)
  if (Type_case() == kFtrlOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::FtrlOp*>(_impl_.Type_.ftrl_op_);
    _impl_.Type_.ftrl_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_ftrl_op(
    ::mojo::spec::FtrlOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_ftrl_op();
    _impl_.Type_.ftrl_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.ftrl_op)
}
inline ::mojo::spec::FtrlOp* PROTOBUF_NONNULL Transformation::_internal_mutable_ftrl_op() {
  if (Type_case() != kFtrlOp) {
    clear_Type();
    set_has_ftrl_op();
    _impl_.Type_.ftrl_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::FtrlOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::FtrlOp*>(_impl_.Type_.ftrl_op_);
}
inline ::mojo::spec::FtrlOp* PROTOBUF_NONNULL Transformation::mutable_ftrl_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::FtrlOp* _msg = _internal_mutable_ftrl_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.ftrl_op)
  return _msg;
}

// .mojo.spec.PytorchTokenizerOp pytorch_token_op = 37;
inline bool Transformation::has_pytorch_token_op() const {
  return Type_case() == kPytorchTokenOp;
}
inline bool Transformation::_internal_has_pytorch_token_op() const {
  return Type_case() == kPytorchTokenOp;
}
inline void Transformation::set_has_pytorch_token_op() {
  _impl_._oneof_case_[0] = kPytorchTokenOp;
}
inline ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE Transformation::release_pytorch_token_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.pytorch_token_op)
  if (Type_case() == kPytorchTokenOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PytorchTokenizerOp*>(_impl_.Type_.pytorch_token_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.pytorch_token_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::PytorchTokenizerOp& Transformation::_internal_pytorch_token_op() const {
  return Type_case() == kPytorchTokenOp ? static_cast<const ::mojo::spec::PytorchTokenizerOp&>(*reinterpret_cast<::mojo::spec::PytorchTokenizerOp*>(_impl_.Type_.pytorch_token_op_))
                     : reinterpret_cast<const ::mojo::spec::PytorchTokenizerOp&>(::mojo::spec::_PytorchTokenizerOp_default_instance_);
}
inline const ::mojo::spec::PytorchTokenizerOp& Transformation::pytorch_token_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.pytorch_token_op)
  return _internal_pytorch_token_op();
}
inline ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_pytorch_token_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.pytorch_token_op)
  if (Type_case() == kPytorchTokenOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PytorchTokenizerOp*>(_impl_.Type_.pytorch_token_op_);
    _impl_.Type_.pytorch_token_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_pytorch_token_op(
    ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_pytorch_token_op();
    _impl_.Type_.pytorch_token_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.pytorch_token_op)
}
inline ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NONNULL Transformation::_internal_mutable_pytorch_token_op() {
  if (Type_case() != kPytorchTokenOp) {
    clear_Type();
    set_has_pytorch_token_op();
    _impl_.Type_.pytorch_token_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::PytorchTokenizerOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::PytorchTokenizerOp*>(_impl_.Type_.pytorch_token_op_);
}
inline ::mojo::spec::PytorchTokenizerOp* PROTOBUF_NONNULL Transformation::mutable_pytorch_token_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::PytorchTokenizerOp* _msg = _internal_mutable_pytorch_token_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.pytorch_token_op)
  return _msg;
}

// .mojo.spec.PytorchOp pytorch_op = 38;
inline bool Transformation::has_pytorch_op() const {
  return Type_case() == kPytorchOp;
}
inline bool Transformation::_internal_has_pytorch_op() const {
  return Type_case() == kPytorchOp;
}
inline void Transformation::set_has_pytorch_op() {
  _impl_._oneof_case_[0] = kPytorchOp;
}
inline void Transformation::clear_pytorch_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kPytorchOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.pytorch_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.pytorch_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::PytorchOp* PROTOBUF_NULLABLE Transformation::release_pytorch_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.pytorch_op)
  if (Type_case() == kPytorchOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PytorchOp*>(_impl_.Type_.pytorch_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.pytorch_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::PytorchOp& Transformation::_internal_pytorch_op() const {
  return Type_case() == kPytorchOp ? static_cast<const ::mojo::spec::PytorchOp&>(*reinterpret_cast<::mojo::spec::PytorchOp*>(_impl_.Type_.pytorch_op_))
                     : reinterpret_cast<const ::mojo::spec::PytorchOp&>(::mojo::spec::_PytorchOp_default_instance_);
}
inline const ::mojo::spec::PytorchOp& Transformation::pytorch_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.pytorch_op)
  return _internal_pytorch_op();
}
inline ::mojo::spec::PytorchOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_pytorch_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.pytorch_op)
  if (Type_case() == kPytorchOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::PytorchOp*>(_impl_.Type_.pytorch_op_);
    _impl_.Type_.pytorch_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_pytorch_op(
    ::mojo::spec::PytorchOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_pytorch_op();
    _impl_.Type_.pytorch_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.pytorch_op)
}
inline ::mojo::spec::PytorchOp* PROTOBUF_NONNULL Transformation::_internal_mutable_pytorch_op() {
  if (Type_case() != kPytorchOp) {
    clear_Type();
    set_has_pytorch_op();
    _impl_.Type_.pytorch_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::PytorchOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::PytorchOp*>(_impl_.Type_.pytorch_op_);
}
inline ::mojo::spec::PytorchOp* PROTOBUF_NONNULL Transformation::mutable_pytorch_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::PytorchOp* _msg = _internal_mutable_pytorch_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.pytorch_op)
  return _msg;
}

// .mojo.spec.CustomOp custom_op = 39;
inline bool Transformation::has_custom_op() const {
  return Type_case() == kCustomOp;
}
inline bool Transformation::_internal_has_custom_op() const {
  return Type_case() == kCustomOp;
}
inline void Transformation::set_has_custom_op() {
  _impl_._oneof_case_[0] = kCustomOp;
}
inline ::mojo::spec::CustomOp* PROTOBUF_NULLABLE Transformation::release_custom_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.custom_op)
  if (Type_case() == kCustomOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CustomOp*>(_impl_.Type_.custom_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.custom_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::CustomOp& Transformation::_internal_custom_op() const {
  return Type_case() == kCustomOp ? static_cast<const ::mojo::spec::CustomOp&>(*reinterpret_cast<::mojo::spec::CustomOp*>(_impl_.Type_.custom_op_))
                     : reinterpret_cast<const ::mojo::spec::CustomOp&>(::mojo::spec::_CustomOp_default_instance_);
}
inline const ::mojo::spec::CustomOp& Transformation::custom_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.custom_op)
  return _internal_custom_op();
}
inline ::mojo::spec::CustomOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_custom_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.custom_op)
  if (Type_case() == kCustomOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CustomOp*>(_impl_.Type_.custom_op_);
    _impl_.Type_.custom_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_custom_op(
    ::mojo::spec::CustomOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_custom_op();
    _impl_.Type_.custom_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.custom_op)
}
inline ::mojo::spec::CustomOp* PROTOBUF_NONNULL Transformation::_internal_mutable_custom_op() {
  if (Type_case() != kCustomOp) {
    clear_Type();
    set_has_custom_op();
    _impl_.Type_.custom_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::CustomOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::CustomOp*>(_impl_.Type_.custom_op_);
}
inline ::mojo::spec::CustomOp* PROTOBUF_NONNULL Transformation::mutable_custom_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::CustomOp* _msg = _internal_mutable_custom_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.custom_op)
  return _msg;
}

// .mojo.spec.LinearBlenderOp linear_blender_op = 40;
inline bool Transformation::has_linear_blender_op() const {
  return Type_case() == kLinearBlenderOp;
}
inline bool Transformation::_internal_has_linear_blender_op() const {
  return Type_case() == kLinearBlenderOp;
}
inline void Transformation::set_has_linear_blender_op() {
  _impl_._oneof_case_[0] = kLinearBlenderOp;
}
inline void Transformation::clear_linear_blender_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kLinearBlenderOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.linear_blender_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.linear_blender_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE Transformation::release_linear_blender_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.linear_blender_op)
  if (Type_case() == kLinearBlenderOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LinearBlenderOp*>(_impl_.Type_.linear_blender_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.linear_blender_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::LinearBlenderOp& Transformation::_internal_linear_blender_op() const {
  return Type_case() == kLinearBlenderOp ? static_cast<const ::mojo::spec::LinearBlenderOp&>(*reinterpret_cast<::mojo::spec::LinearBlenderOp*>(_impl_.Type_.linear_blender_op_))
                     : reinterpret_cast<const ::mojo::spec::LinearBlenderOp&>(::mojo::spec::_LinearBlenderOp_default_instance_);
}
inline const ::mojo::spec::LinearBlenderOp& Transformation::linear_blender_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.linear_blender_op)
  return _internal_linear_blender_op();
}
inline ::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_linear_blender_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.linear_blender_op)
  if (Type_case() == kLinearBlenderOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::LinearBlenderOp*>(_impl_.Type_.linear_blender_op_);
    _impl_.Type_.linear_blender_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_linear_blender_op(
    ::mojo::spec::LinearBlenderOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_linear_blender_op();
    _impl_.Type_.linear_blender_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.linear_blender_op)
}
inline ::mojo::spec::LinearBlenderOp* PROTOBUF_NONNULL Transformation::_internal_mutable_linear_blender_op() {
  if (Type_case() != kLinearBlenderOp) {
    clear_Type();
    set_has_linear_blender_op();
    _impl_.Type_.linear_blender_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::LinearBlenderOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::LinearBlenderOp*>(_impl_.Type_.linear_blender_op_);
}
inline ::mojo::spec::LinearBlenderOp* PROTOBUF_NONNULL Transformation::mutable_linear_blender_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::LinearBlenderOp* _msg = _internal_mutable_linear_blender_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.linear_blender_op)
  return _msg;
}

// .mojo.spec.ImgResizeOp img_resize_op = 41;
inline bool Transformation::has_img_resize_op() const {
  return Type_case() == kImgResizeOp;
}
inline bool Transformation::_internal_has_img_resize_op() const {
  return Type_case() == kImgResizeOp;
}
inline void Transformation::set_has_img_resize_op() {
  _impl_._oneof_case_[0] = kImgResizeOp;
}
inline void Transformation::clear_img_resize_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kImgResizeOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.img_resize_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.img_resize_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE Transformation::release_img_resize_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.img_resize_op)
  if (Type_case() == kImgResizeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgResizeOp*>(_impl_.Type_.img_resize_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.img_resize_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImgResizeOp& Transformation::_internal_img_resize_op() const {
  return Type_case() == kImgResizeOp ? static_cast<const ::mojo::spec::ImgResizeOp&>(*reinterpret_cast<::mojo::spec::ImgResizeOp*>(_impl_.Type_.img_resize_op_))
                     : reinterpret_cast<const ::mojo::spec::ImgResizeOp&>(::mojo::spec::_ImgResizeOp_default_instance_);
}
inline const ::mojo::spec::ImgResizeOp& Transformation::img_resize_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.img_resize_op)
  return _internal_img_resize_op();
}
inline ::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_img_resize_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.img_resize_op)
  if (Type_case() == kImgResizeOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgResizeOp*>(_impl_.Type_.img_resize_op_);
    _impl_.Type_.img_resize_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_img_resize_op(
    ::mojo::spec::ImgResizeOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_img_resize_op();
    _impl_.Type_.img_resize_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.img_resize_op)
}
inline ::mojo::spec::ImgResizeOp* PROTOBUF_NONNULL Transformation::_internal_mutable_img_resize_op() {
  if (Type_case() != kImgResizeOp) {
    clear_Type();
    set_has_img_resize_op();
    _impl_.Type_.img_resize_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImgResizeOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImgResizeOp*>(_impl_.Type_.img_resize_op_);
}
inline ::mojo::spec::ImgResizeOp* PROTOBUF_NONNULL Transformation::mutable_img_resize_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImgResizeOp* _msg = _internal_mutable_img_resize_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.img_resize_op)
  return _msg;
}

// .mojo.spec.ImageNetPreprocessingOp imagenet_preprocessing_op = 42;
inline bool Transformation::has_imagenet_preprocessing_op() const {
  return Type_case() == kImagenetPreprocessingOp;
}
inline bool Transformation::_internal_has_imagenet_preprocessing_op() const {
  return Type_case() == kImagenetPreprocessingOp;
}
inline void Transformation::set_has_imagenet_preprocessing_op() {
  _impl_._oneof_case_[0] = kImagenetPreprocessingOp;
}
inline void Transformation::clear_imagenet_preprocessing_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kImagenetPreprocessingOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.imagenet_preprocessing_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.imagenet_preprocessing_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE Transformation::release_imagenet_preprocessing_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.imagenet_preprocessing_op)
  if (Type_case() == kImagenetPreprocessingOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImageNetPreprocessingOp*>(_impl_.Type_.imagenet_preprocessing_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.imagenet_preprocessing_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImageNetPreprocessingOp& Transformation::_internal_imagenet_preprocessing_op() const {
  return Type_case() == kImagenetPreprocessingOp ? static_cast<const ::mojo::spec::ImageNetPreprocessingOp&>(*reinterpret_cast<::mojo::spec::ImageNetPreprocessingOp*>(_impl_.Type_.imagenet_preprocessing_op_))
                     : reinterpret_cast<const ::mojo::spec::ImageNetPreprocessingOp&>(::mojo::spec::_ImageNetPreprocessingOp_default_instance_);
}
inline const ::mojo::spec::ImageNetPreprocessingOp& Transformation::imagenet_preprocessing_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.imagenet_preprocessing_op)
  return _internal_imagenet_preprocessing_op();
}
inline ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_imagenet_preprocessing_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.imagenet_preprocessing_op)
  if (Type_case() == kImagenetPreprocessingOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImageNetPreprocessingOp*>(_impl_.Type_.imagenet_preprocessing_op_);
    _impl_.Type_.imagenet_preprocessing_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_imagenet_preprocessing_op(
    ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_imagenet_preprocessing_op();
    _impl_.Type_.imagenet_preprocessing_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.imagenet_preprocessing_op)
}
inline ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NONNULL Transformation::_internal_mutable_imagenet_preprocessing_op() {
  if (Type_case() != kImagenetPreprocessingOp) {
    clear_Type();
    set_has_imagenet_preprocessing_op();
    _impl_.Type_.imagenet_preprocessing_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImageNetPreprocessingOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImageNetPreprocessingOp*>(_impl_.Type_.imagenet_preprocessing_op_);
}
inline ::mojo::spec::ImageNetPreprocessingOp* PROTOBUF_NONNULL Transformation::mutable_imagenet_preprocessing_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImageNetPreprocessingOp* _msg = _internal_mutable_imagenet_preprocessing_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.imagenet_preprocessing_op)
  return _msg;
}

// .mojo.spec.IdentityOp identity_op = 43;
inline bool Transformation::has_identity_op() const {
  return Type_case() == kIdentityOp;
}
inline bool Transformation::_internal_has_identity_op() const {
  return Type_case() == kIdentityOp;
}
inline void Transformation::set_has_identity_op() {
  _impl_._oneof_case_[0] = kIdentityOp;
}
inline void Transformation::clear_identity_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kIdentityOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.identity_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.identity_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::IdentityOp* PROTOBUF_NULLABLE Transformation::release_identity_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.identity_op)
  if (Type_case() == kIdentityOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IdentityOp*>(_impl_.Type_.identity_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.identity_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::IdentityOp& Transformation::_internal_identity_op() const {
  return Type_case() == kIdentityOp ? static_cast<const ::mojo::spec::IdentityOp&>(*reinterpret_cast<::mojo::spec::IdentityOp*>(_impl_.Type_.identity_op_))
                     : reinterpret_cast<const ::mojo::spec::IdentityOp&>(::mojo::spec::_IdentityOp_default_instance_);
}
inline const ::mojo::spec::IdentityOp& Transformation::identity_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.identity_op)
  return _internal_identity_op();
}
inline ::mojo::spec::IdentityOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_identity_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.identity_op)
  if (Type_case() == kIdentityOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::IdentityOp*>(_impl_.Type_.identity_op_);
    _impl_.Type_.identity_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_identity_op(
    ::mojo::spec::IdentityOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_identity_op();
    _impl_.Type_.identity_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.identity_op)
}
inline ::mojo::spec::IdentityOp* PROTOBUF_NONNULL Transformation::_internal_mutable_identity_op() {
  if (Type_case() != kIdentityOp) {
    clear_Type();
    set_has_identity_op();
    _impl_.Type_.identity_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::IdentityOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::IdentityOp*>(_impl_.Type_.identity_op_);
}
inline ::mojo::spec::IdentityOp* PROTOBUF_NONNULL Transformation::mutable_identity_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::IdentityOp* _msg = _internal_mutable_identity_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.identity_op)
  return _msg;
}

// .mojo.spec.CatBoostOp catboost_op = 44;
inline bool Transformation::has_catboost_op() const {
  return Type_case() == kCatboostOp;
}
inline bool Transformation::_internal_has_catboost_op() const {
  return Type_case() == kCatboostOp;
}
inline void Transformation::set_has_catboost_op() {
  _impl_._oneof_case_[0] = kCatboostOp;
}
inline void Transformation::clear_catboost_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kCatboostOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.catboost_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.catboost_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE Transformation::release_catboost_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.catboost_op)
  if (Type_case() == kCatboostOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CatBoostOp*>(_impl_.Type_.catboost_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.catboost_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::CatBoostOp& Transformation::_internal_catboost_op() const {
  return Type_case() == kCatboostOp ? static_cast<const ::mojo::spec::CatBoostOp&>(*reinterpret_cast<::mojo::spec::CatBoostOp*>(_impl_.Type_.catboost_op_))
                     : reinterpret_cast<const ::mojo::spec::CatBoostOp&>(::mojo::spec::_CatBoostOp_default_instance_);
}
inline const ::mojo::spec::CatBoostOp& Transformation::catboost_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.catboost_op)
  return _internal_catboost_op();
}
inline ::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_catboost_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.catboost_op)
  if (Type_case() == kCatboostOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::CatBoostOp*>(_impl_.Type_.catboost_op_);
    _impl_.Type_.catboost_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_catboost_op(
    ::mojo::spec::CatBoostOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_catboost_op();
    _impl_.Type_.catboost_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.catboost_op)
}
inline ::mojo::spec::CatBoostOp* PROTOBUF_NONNULL Transformation::_internal_mutable_catboost_op() {
  if (Type_case() != kCatboostOp) {
    clear_Type();
    set_has_catboost_op();
    _impl_.Type_.catboost_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::CatBoostOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::CatBoostOp*>(_impl_.Type_.catboost_op_);
}
inline ::mojo::spec::CatBoostOp* PROTOBUF_NONNULL Transformation::mutable_catboost_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::CatBoostOp* _msg = _internal_mutable_catboost_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.catboost_op)
  return _msg;
}

// .mojo.spec.ImgCenterCropOp img_center_crop_op = 45;
inline bool Transformation::has_img_center_crop_op() const {
  return Type_case() == kImgCenterCropOp;
}
inline bool Transformation::_internal_has_img_center_crop_op() const {
  return Type_case() == kImgCenterCropOp;
}
inline void Transformation::set_has_img_center_crop_op() {
  _impl_._oneof_case_[0] = kImgCenterCropOp;
}
inline void Transformation::clear_img_center_crop_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kImgCenterCropOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.img_center_crop_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.img_center_crop_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE Transformation::release_img_center_crop_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.img_center_crop_op)
  if (Type_case() == kImgCenterCropOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgCenterCropOp*>(_impl_.Type_.img_center_crop_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.img_center_crop_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImgCenterCropOp& Transformation::_internal_img_center_crop_op() const {
  return Type_case() == kImgCenterCropOp ? static_cast<const ::mojo::spec::ImgCenterCropOp&>(*reinterpret_cast<::mojo::spec::ImgCenterCropOp*>(_impl_.Type_.img_center_crop_op_))
                     : reinterpret_cast<const ::mojo::spec::ImgCenterCropOp&>(::mojo::spec::_ImgCenterCropOp_default_instance_);
}
inline const ::mojo::spec::ImgCenterCropOp& Transformation::img_center_crop_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.img_center_crop_op)
  return _internal_img_center_crop_op();
}
inline ::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_img_center_crop_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.img_center_crop_op)
  if (Type_case() == kImgCenterCropOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgCenterCropOp*>(_impl_.Type_.img_center_crop_op_);
    _impl_.Type_.img_center_crop_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_img_center_crop_op(
    ::mojo::spec::ImgCenterCropOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_img_center_crop_op();
    _impl_.Type_.img_center_crop_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.img_center_crop_op)
}
inline ::mojo::spec::ImgCenterCropOp* PROTOBUF_NONNULL Transformation::_internal_mutable_img_center_crop_op() {
  if (Type_case() != kImgCenterCropOp) {
    clear_Type();
    set_has_img_center_crop_op();
    _impl_.Type_.img_center_crop_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImgCenterCropOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImgCenterCropOp*>(_impl_.Type_.img_center_crop_op_);
}
inline ::mojo::spec::ImgCenterCropOp* PROTOBUF_NONNULL Transformation::mutable_img_center_crop_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImgCenterCropOp* _msg = _internal_mutable_img_center_crop_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.img_center_crop_op)
  return _msg;
}

// .mojo.spec.ImgResizeShorterOp img_resize_shorter_op = 46;
inline bool Transformation::has_img_resize_shorter_op() const {
  return Type_case() == kImgResizeShorterOp;
}
inline bool Transformation::_internal_has_img_resize_shorter_op() const {
  return Type_case() == kImgResizeShorterOp;
}
inline void Transformation::set_has_img_resize_shorter_op() {
  _impl_._oneof_case_[0] = kImgResizeShorterOp;
}
inline void Transformation::clear_img_resize_shorter_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kImgResizeShorterOp) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.img_resize_shorter_op_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.img_resize_shorter_op_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE Transformation::release_img_resize_shorter_op() {
  // @@protoc_insertion_point(field_release:mojo.spec.Transformation.img_resize_shorter_op)
  if (Type_case() == kImgResizeShorterOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgResizeShorterOp*>(_impl_.Type_.img_resize_shorter_op_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.img_resize_shorter_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImgResizeShorterOp& Transformation::_internal_img_resize_shorter_op() const {
  return Type_case() == kImgResizeShorterOp ? static_cast<const ::mojo::spec::ImgResizeShorterOp&>(*reinterpret_cast<::mojo::spec::ImgResizeShorterOp*>(_impl_.Type_.img_resize_shorter_op_))
                     : reinterpret_cast<const ::mojo::spec::ImgResizeShorterOp&>(::mojo::spec::_ImgResizeShorterOp_default_instance_);
}
inline const ::mojo::spec::ImgResizeShorterOp& Transformation::img_resize_shorter_op() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Transformation.img_resize_shorter_op)
  return _internal_img_resize_shorter_op();
}
inline ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE Transformation::unsafe_arena_release_img_resize_shorter_op() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Transformation.img_resize_shorter_op)
  if (Type_case() == kImgResizeShorterOp) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImgResizeShorterOp*>(_impl_.Type_.img_resize_shorter_op_);
    _impl_.Type_.img_resize_shorter_op_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Transformation::unsafe_arena_set_allocated_img_resize_shorter_op(
    ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_img_resize_shorter_op();
    _impl_.Type_.img_resize_shorter_op_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Transformation.img_resize_shorter_op)
}
inline ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NONNULL Transformation::_internal_mutable_img_resize_shorter_op() {
  if (Type_case() != kImgResizeShorterOp) {
    clear_Type();
    set_has_img_resize_shorter_op();
    _impl_.Type_.img_resize_shorter_op_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImgResizeShorterOp>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImgResizeShorterOp*>(_impl_.Type_.img_resize_shorter_op_);
}
inline ::mojo::spec::ImgResizeShorterOp* PROTOBUF_NONNULL Transformation::mutable_img_resize_shorter_op()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImgResizeShorterOp* _msg = _internal_mutable_img_resize_shorter_op();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Transformation.img_resize_shorter_op)
  return _msg;
}

inline bool Transformation::has_Type() const {
  return Type_case() != TYPE_NOT_SET;
}
inline void Transformation::clear_has_Type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline Transformation::TypeCase Transformation::Type_case() const {
  return Transformation::TypeCase(_impl_._oneof_case_[0]);
}
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace spec
}  // namespace mojo


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::mojo::spec::TorchTensorType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::TorchTensorType>() {
  return ::mojo::spec::TorchTensorType_descriptor();
}
template <>
struct is_proto_enum<::mojo::spec::ImageNetPreprocessingMode> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::ImageNetPreprocessingMode>() {
  return ::mojo::spec::ImageNetPreprocessingMode_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // Pipeline_2eproto_2epb_2eh
