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

#ifndef feature_2eproto_2epb_2eh
#define feature_2eproto_2epb_2eh

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

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7034001
#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_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/unknown_field_set.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_feature_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_feature_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_feature_2eproto;
}  // extern "C"
namespace rocal {
namespace tensorflow {
class BytesList;
struct BytesListDefaultTypeInternal;
extern BytesListDefaultTypeInternal _BytesList_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull BytesList_class_data_;
class Feature;
struct FeatureDefaultTypeInternal;
extern FeatureDefaultTypeInternal _Feature_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Feature_class_data_;
class FeatureList;
struct FeatureListDefaultTypeInternal;
extern FeatureListDefaultTypeInternal _FeatureList_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FeatureList_class_data_;
class FeatureLists;
struct FeatureListsDefaultTypeInternal;
extern FeatureListsDefaultTypeInternal _FeatureLists_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FeatureLists_class_data_;
class FeatureLists_FeatureListEntry_DoNotUse;
struct FeatureLists_FeatureListEntry_DoNotUseDefaultTypeInternal;
extern FeatureLists_FeatureListEntry_DoNotUseDefaultTypeInternal _FeatureLists_FeatureListEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FeatureLists_FeatureListEntry_DoNotUse_class_data_;
class Features;
struct FeaturesDefaultTypeInternal;
extern FeaturesDefaultTypeInternal _Features_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Features_class_data_;
class Features_FeatureEntry_DoNotUse;
struct Features_FeatureEntry_DoNotUseDefaultTypeInternal;
extern Features_FeatureEntry_DoNotUseDefaultTypeInternal _Features_FeatureEntry_DoNotUse_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Features_FeatureEntry_DoNotUse_class_data_;
class FloatList;
struct FloatListDefaultTypeInternal;
extern FloatListDefaultTypeInternal _FloatList_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull FloatList_class_data_;
class Int64List;
struct Int64ListDefaultTypeInternal;
extern Int64ListDefaultTypeInternal _Int64List_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Int64List_class_data_;
}  // namespace tensorflow
}  // namespace rocal
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google

namespace rocal {
namespace tensorflow {

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


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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Int64List final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.Int64List) */ {
 public:
  inline Int64List() : Int64List(nullptr) {}
  ~Int64List() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr Int64List(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Int64List& default_instance() {
    return *reinterpret_cast<const Int64List*>(
        &_Int64List_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(Int64List& a, Int64List& b) { a.Swap(&b); }
  inline void Swap(Int64List* 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(Int64List* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit Int64List(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Int64List(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Int64List& from);
  Int64List(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Int64List&& from) noexcept
      : Int64List(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 1,
  };
  // repeated int64 value = 1 [packed = true];
  [[nodiscard]] int value_size()
      const;
  private:
  int _internal_value_size() const;

  public:
  void clear_value() ;
  [[nodiscard]] ::int64_t value(int index) const;
  void set_value(int index, ::int64_t value);
  void add_value(::int64_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::int64_t>& value() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_value();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_value() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:rocal.tensorflow.Int64List)
 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;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 Int64List& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> value_;
    ::google::protobuf::internal::CachedSize _value_cached_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FloatList final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.FloatList) */ {
 public:
  inline FloatList() : FloatList(nullptr) {}
  ~FloatList() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr FloatList(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FloatList& default_instance() {
    return *reinterpret_cast<const FloatList*>(
        &_FloatList_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(FloatList& a, FloatList& b) { a.Swap(&b); }
  inline void Swap(FloatList* 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(FloatList* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit FloatList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FloatList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FloatList& from);
  FloatList(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FloatList&& from) noexcept
      : FloatList(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 1,
  };
  // repeated float value = 1 [packed = true];
  [[nodiscard]] int value_size()
      const;
  private:
  int _internal_value_size() const;

  public:
  void clear_value() ;
  [[nodiscard]] float value(int index) const;
  void set_value(int index, float value);
  void add_value(float value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<float>& value() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_value();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_value() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:rocal.tensorflow.FloatList)
 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;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 FloatList& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<float> value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED BytesList final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.BytesList) */ {
 public:
  inline BytesList() : BytesList(nullptr) {}
  ~BytesList() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr BytesList(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const BytesList& default_instance() {
    return *reinterpret_cast<const BytesList*>(
        &_BytesList_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(BytesList& a, BytesList& b) { a.Swap(&b); }
  inline void Swap(BytesList* 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(BytesList* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit BytesList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  BytesList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const BytesList& from);
  BytesList(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, BytesList&& from) noexcept
      : BytesList(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 1,
  };
  // repeated bytes value = 1;
  [[nodiscard]] int value_size()
      const;
  private:
  int _internal_value_size() const;

  public:
  void clear_value() ;
  [[nodiscard]] const ::std::string& value(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_value(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_value();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_value(Arg_&& value, Args_... args);
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::std::string>&
  value() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
  mutable_value();

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

  public:
  // @@protoc_insertion_point(class_scope:rocal.tensorflow.BytesList)
 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;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 BytesList& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Feature final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.Feature) */ {
 public:
  inline Feature() : Feature(nullptr) {}
  ~Feature() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr Feature(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Feature& default_instance() {
    return *reinterpret_cast<const Feature*>(
        &_Feature_default_instance_);
  }
  enum KindCase {
    kBytesList = 1,
    kFloatList = 2,
    kInt64List = 3,
    KIND_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(Feature& a, Feature& b) { a.Swap(&b); }
  inline void Swap(Feature* 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(Feature* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit Feature(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Feature(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Feature& from);
  Feature(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Feature&& from) noexcept
      : Feature(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kBytesListFieldNumber = 1,
    kFloatListFieldNumber = 2,
    kInt64ListFieldNumber = 3,
  };
  // .rocal.tensorflow.BytesList bytes_list = 1;
  [[nodiscard]] bool has_bytes_list()
      const;
  private:
  bool _internal_has_bytes_list() const;

  public:
  void clear_bytes_list() ;
  [[nodiscard]] const ::rocal::tensorflow::BytesList& bytes_list() const;
  [[nodiscard]] ::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE release_bytes_list();
  ::rocal::tensorflow::BytesList* PROTOBUF_NONNULL mutable_bytes_list();
  void set_allocated_bytes_list(::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bytes_list(::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE value);
  ::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE unsafe_arena_release_bytes_list();

  private:
  const ::rocal::tensorflow::BytesList& _internal_bytes_list() const;
  ::rocal::tensorflow::BytesList* PROTOBUF_NONNULL _internal_mutable_bytes_list();

  public:
  // .rocal.tensorflow.FloatList float_list = 2;
  [[nodiscard]] bool has_float_list()
      const;
  private:
  bool _internal_has_float_list() const;

  public:
  void clear_float_list() ;
  [[nodiscard]] const ::rocal::tensorflow::FloatList& float_list() const;
  [[nodiscard]] ::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE release_float_list();
  ::rocal::tensorflow::FloatList* PROTOBUF_NONNULL mutable_float_list();
  void set_allocated_float_list(::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_float_list(::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE value);
  ::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE unsafe_arena_release_float_list();

  private:
  const ::rocal::tensorflow::FloatList& _internal_float_list() const;
  ::rocal::tensorflow::FloatList* PROTOBUF_NONNULL _internal_mutable_float_list();

  public:
  // .rocal.tensorflow.Int64List int64_list = 3;
  [[nodiscard]] bool has_int64_list()
      const;
  private:
  bool _internal_has_int64_list() const;

  public:
  void clear_int64_list() ;
  [[nodiscard]] const ::rocal::tensorflow::Int64List& int64_list() const;
  [[nodiscard]] ::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE release_int64_list();
  ::rocal::tensorflow::Int64List* PROTOBUF_NONNULL mutable_int64_list();
  void set_allocated_int64_list(::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_int64_list(::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE value);
  ::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE unsafe_arena_release_int64_list();

  private:
  const ::rocal::tensorflow::Int64List& _internal_int64_list() const;
  ::rocal::tensorflow::Int64List* PROTOBUF_NONNULL _internal_mutable_int64_list();

  public:
  void clear_kind();
  KindCase kind_case() const;
  // @@protoc_insertion_point(class_scope:rocal.tensorflow.Feature)
 private:
  class _Internal;
  void set_has_bytes_list();
  void set_has_float_list();
  void set_has_int64_list();
  [[nodiscard]] inline bool has_kind() const;
  inline void clear_has_kind();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 3,
                                   3, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 Feature& from_msg);
    union KindUnion {
      constexpr KindUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE bytes_list_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE float_list_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE int64_list_;
    } kind_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

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


  static constexpr auto InternalGenerateClassData_();

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 50,
                                   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 Features_FeatureEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FeatureList final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.FeatureList) */ {
 public:
  inline FeatureList() : FeatureList(nullptr) {}
  ~FeatureList() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr FeatureList(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FeatureList& default_instance() {
    return *reinterpret_cast<const FeatureList*>(
        &_FeatureList_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(FeatureList& a, FeatureList& b) { a.Swap(&b); }
  inline void Swap(FeatureList* 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(FeatureList* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit FeatureList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FeatureList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FeatureList& from);
  FeatureList(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FeatureList&& from) noexcept
      : FeatureList(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFeatureFieldNumber = 1,
  };
  // repeated .rocal.tensorflow.Feature feature = 1;
  [[nodiscard]] int feature_size()
      const;
  private:
  int _internal_feature_size() const;

  public:
  void clear_feature() ;
  [[nodiscard]] ::rocal::tensorflow::Feature* PROTOBUF_NONNULL mutable_feature(int index);
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>* PROTOBUF_NONNULL
  mutable_feature();

  private:
  const ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>& _internal_feature() const;
  ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>* PROTOBUF_NONNULL _internal_mutable_feature();
  public:
  [[nodiscard]] const ::rocal::tensorflow::Feature& feature(int index) const;
  ::rocal::tensorflow::Feature* PROTOBUF_NONNULL add_feature();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>& feature()
      const;
  // @@protoc_insertion_point(class_scope:rocal.tensorflow.FeatureList)
 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;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 FeatureList& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::rocal::tensorflow::Feature > feature_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED Features final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.Features) */ {
 public:
  inline Features() : Features(nullptr) {}
  ~Features() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr Features(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const Features& default_instance() {
    return *reinterpret_cast<const Features*>(
        &_Features_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(Features& a, Features& b) { a.Swap(&b); }
  inline void Swap(Features* 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(Features* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit Features(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Features(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Features& from);
  Features(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Features&& from) noexcept
      : Features(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFeatureFieldNumber = 1,
  };
  // map<string, .rocal.tensorflow.Feature> feature = 1;
  [[nodiscard]] int feature_size()
      const;
  private:
  int _internal_feature_size() const;

  public:
  void clear_feature() ;
  [[nodiscard]] const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>& feature() const;
  [[nodiscard]] ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>* PROTOBUF_NONNULL mutable_feature();

  private:
  const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>& _internal_feature() const;
  ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>* PROTOBUF_NONNULL _internal_mutable_feature();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 Features& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<Features_FeatureEntry_DoNotUse, ::std::string, ::rocal::tensorflow::Feature> feature_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

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


  static constexpr auto InternalGenerateClassData_();

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

  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   1, 58,
                                   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 FeatureLists_FeatureListEntry_DoNotUse_class_data_;
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FeatureLists final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:rocal.tensorflow.FeatureLists) */ {
 public:
  inline FeatureLists() : FeatureLists(nullptr) {}
  ~FeatureLists() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr FeatureLists(::google::protobuf::internal::ConstantInitialized);

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

  [[nodiscard]] 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);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FeatureLists& default_instance() {
    return *reinterpret_cast<const FeatureLists*>(
        &_FeatureLists_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(FeatureLists& a, FeatureLists& b) { a.Swap(&b); }
  inline void Swap(FeatureLists* 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(FeatureLists* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

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

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

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

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::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
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

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

  explicit FeatureLists(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FeatureLists(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FeatureLists& from);
  FeatureLists(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FeatureLists&& from) noexcept
      : FeatureLists(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_();

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

  // accessors -------------------------------------------------------
  enum : int {
    kFeatureListFieldNumber = 1,
  };
  // map<string, .rocal.tensorflow.FeatureList> feature_list = 1;
  [[nodiscard]] int feature_list_size()
      const;
  private:
  int _internal_feature_list_size() const;

  public:
  void clear_feature_list() ;
  [[nodiscard]] const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>& feature_list() const;
  [[nodiscard]] ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>* PROTOBUF_NONNULL mutable_feature_list();

  private:
  const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>& _internal_feature_list() const;
  ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>* PROTOBUF_NONNULL _internal_mutable_feature_list();

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

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 FeatureLists& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<FeatureLists_FeatureListEntry_DoNotUse, ::std::string, ::rocal::tensorflow::FeatureList> feature_list_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_feature_2eproto;
};

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

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




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


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

// BytesList

// repeated bytes value = 1;
inline int BytesList::_internal_value_size() const {
  return _internal_value().size();
}
inline int BytesList::value_size() const {
  return _internal_value_size();
}
inline void BytesList::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL BytesList::add_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_value()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:rocal.tensorflow.BytesList.value)
  return _s;
}
inline const ::std::string& BytesList::value(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.BytesList.value)
  return _internal_value().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL BytesList::mutable_value(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:rocal.tensorflow.BytesList.value)
  return _internal_mutable_value()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void BytesList::set_value(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(*_internal_mutable_value()->Mutable(index), ::std::forward<Arg_>(value),
                        args... , ::google::protobuf::internal::BytesTag{});
  // @@protoc_insertion_point(field_set:rocal.tensorflow.BytesList.value)
}
template <typename Arg_, typename... Args_>
inline void BytesList::add_value(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_value(), ::std::forward<Arg_>(value),
      args... , ::google::protobuf::internal::BytesTag{});
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:rocal.tensorflow.BytesList.value)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& BytesList::value()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:rocal.tensorflow.BytesList.value)
  return _internal_value();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
BytesList::mutable_value() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:rocal.tensorflow.BytesList.value)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_value();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
BytesList::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
BytesList::_internal_mutable_value() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.value_;
}

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

// FloatList

// repeated float value = 1 [packed = true];
inline int FloatList::_internal_value_size() const {
  return _internal_value().size();
}
inline int FloatList::value_size() const {
  return _internal_value_size();
}
inline void FloatList::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline float FloatList::value(int index) const {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.FloatList.value)
  return _internal_value().Get(index);
}
inline void FloatList::set_value(int index, float value) {
  _internal_mutable_value()->Set(index, value);
  // @@protoc_insertion_point(field_set:rocal.tensorflow.FloatList.value)
}
inline void FloatList::add_value(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_value()->InternalAddWithArena(
      internal_visibility(), GetArena(), value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:rocal.tensorflow.FloatList.value)
}
inline const ::google::protobuf::RepeatedField<float>& FloatList::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:rocal.tensorflow.FloatList.value)
  return _internal_value();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL FloatList::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:rocal.tensorflow.FloatList.value)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_value();
}
inline const ::google::protobuf::RepeatedField<float>&
FloatList::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
FloatList::_internal_mutable_value() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.value_;
}

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

// Int64List

// repeated int64 value = 1 [packed = true];
inline int Int64List::_internal_value_size() const {
  return _internal_value().size();
}
inline int Int64List::value_size() const {
  return _internal_value_size();
}
inline void Int64List::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int64_t Int64List::value(int index) const {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.Int64List.value)
  return _internal_value().Get(index);
}
inline void Int64List::set_value(int index, ::int64_t value) {
  _internal_mutable_value()->Set(index, value);
  // @@protoc_insertion_point(field_set:rocal.tensorflow.Int64List.value)
}
inline void Int64List::add_value(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_value()->InternalAddWithArena(
      internal_visibility(), GetArena(), value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:rocal.tensorflow.Int64List.value)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& Int64List::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:rocal.tensorflow.Int64List.value)
  return _internal_value();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL Int64List::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:rocal.tensorflow.Int64List.value)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_value();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
Int64List::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
Int64List::_internal_mutable_value() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.value_;
}

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

// Feature

// .rocal.tensorflow.BytesList bytes_list = 1;
inline bool Feature::has_bytes_list() const {
  return kind_case() == kBytesList;
}
inline bool Feature::_internal_has_bytes_list() const {
  return kind_case() == kBytesList;
}
inline void Feature::set_has_bytes_list() {
  _impl_._oneof_case_[0] = kBytesList;
}
inline void Feature::clear_bytes_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kBytesList) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.bytes_list_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.bytes_list_);
    }
    clear_has_kind();
  }
}
inline ::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE Feature::release_bytes_list() {
  // @@protoc_insertion_point(field_release:rocal.tensorflow.Feature.bytes_list)
  if (kind_case() == kBytesList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::BytesList*>(_impl_.kind_.bytes_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.bytes_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::rocal::tensorflow::BytesList& Feature::_internal_bytes_list() const {
  return kind_case() == kBytesList ? static_cast<const ::rocal::tensorflow::BytesList&>(*reinterpret_cast<::rocal::tensorflow::BytesList*>(_impl_.kind_.bytes_list_))
                     : reinterpret_cast<const ::rocal::tensorflow::BytesList&>(::rocal::tensorflow::_BytesList_default_instance_);
}
inline const ::rocal::tensorflow::BytesList& Feature::bytes_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.Feature.bytes_list)
  return _internal_bytes_list();
}
inline ::rocal::tensorflow::BytesList* PROTOBUF_NULLABLE Feature::unsafe_arena_release_bytes_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:rocal.tensorflow.Feature.bytes_list)
  if (kind_case() == kBytesList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::BytesList*>(_impl_.kind_.bytes_list_);
    _impl_.kind_.bytes_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Feature::unsafe_arena_set_allocated_bytes_list(
    ::rocal::tensorflow::BytesList* 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_kind();
  if (value) {
    set_has_bytes_list();
    _impl_.kind_.bytes_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:rocal.tensorflow.Feature.bytes_list)
}
inline ::rocal::tensorflow::BytesList* PROTOBUF_NONNULL Feature::_internal_mutable_bytes_list() {
  if (kind_case() != kBytesList) {
    clear_kind();
    set_has_bytes_list();
    _impl_.kind_.bytes_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::rocal::tensorflow::BytesList>(GetArena()));
  }
  return reinterpret_cast<::rocal::tensorflow::BytesList*>(_impl_.kind_.bytes_list_);
}
inline ::rocal::tensorflow::BytesList* PROTOBUF_NONNULL Feature::mutable_bytes_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::rocal::tensorflow::BytesList* _msg = _internal_mutable_bytes_list();
  // @@protoc_insertion_point(field_mutable:rocal.tensorflow.Feature.bytes_list)
  return _msg;
}

// .rocal.tensorflow.FloatList float_list = 2;
inline bool Feature::has_float_list() const {
  return kind_case() == kFloatList;
}
inline bool Feature::_internal_has_float_list() const {
  return kind_case() == kFloatList;
}
inline void Feature::set_has_float_list() {
  _impl_._oneof_case_[0] = kFloatList;
}
inline void Feature::clear_float_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kFloatList) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.float_list_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.float_list_);
    }
    clear_has_kind();
  }
}
inline ::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE Feature::release_float_list() {
  // @@protoc_insertion_point(field_release:rocal.tensorflow.Feature.float_list)
  if (kind_case() == kFloatList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::FloatList*>(_impl_.kind_.float_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.float_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::rocal::tensorflow::FloatList& Feature::_internal_float_list() const {
  return kind_case() == kFloatList ? static_cast<const ::rocal::tensorflow::FloatList&>(*reinterpret_cast<::rocal::tensorflow::FloatList*>(_impl_.kind_.float_list_))
                     : reinterpret_cast<const ::rocal::tensorflow::FloatList&>(::rocal::tensorflow::_FloatList_default_instance_);
}
inline const ::rocal::tensorflow::FloatList& Feature::float_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.Feature.float_list)
  return _internal_float_list();
}
inline ::rocal::tensorflow::FloatList* PROTOBUF_NULLABLE Feature::unsafe_arena_release_float_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:rocal.tensorflow.Feature.float_list)
  if (kind_case() == kFloatList) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::FloatList*>(_impl_.kind_.float_list_);
    _impl_.kind_.float_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Feature::unsafe_arena_set_allocated_float_list(
    ::rocal::tensorflow::FloatList* 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_kind();
  if (value) {
    set_has_float_list();
    _impl_.kind_.float_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:rocal.tensorflow.Feature.float_list)
}
inline ::rocal::tensorflow::FloatList* PROTOBUF_NONNULL Feature::_internal_mutable_float_list() {
  if (kind_case() != kFloatList) {
    clear_kind();
    set_has_float_list();
    _impl_.kind_.float_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::rocal::tensorflow::FloatList>(GetArena()));
  }
  return reinterpret_cast<::rocal::tensorflow::FloatList*>(_impl_.kind_.float_list_);
}
inline ::rocal::tensorflow::FloatList* PROTOBUF_NONNULL Feature::mutable_float_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::rocal::tensorflow::FloatList* _msg = _internal_mutable_float_list();
  // @@protoc_insertion_point(field_mutable:rocal.tensorflow.Feature.float_list)
  return _msg;
}

// .rocal.tensorflow.Int64List int64_list = 3;
inline bool Feature::has_int64_list() const {
  return kind_case() == kInt64List;
}
inline bool Feature::_internal_has_int64_list() const {
  return kind_case() == kInt64List;
}
inline void Feature::set_has_int64_list() {
  _impl_._oneof_case_[0] = kInt64List;
}
inline void Feature::clear_int64_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (kind_case() == kInt64List) {
    if (GetArena() == nullptr) {
      delete _impl_.kind_.int64_list_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.kind_.int64_list_);
    }
    clear_has_kind();
  }
}
inline ::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE Feature::release_int64_list() {
  // @@protoc_insertion_point(field_release:rocal.tensorflow.Feature.int64_list)
  if (kind_case() == kInt64List) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::Int64List*>(_impl_.kind_.int64_list_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.kind_.int64_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::rocal::tensorflow::Int64List& Feature::_internal_int64_list() const {
  return kind_case() == kInt64List ? static_cast<const ::rocal::tensorflow::Int64List&>(*reinterpret_cast<::rocal::tensorflow::Int64List*>(_impl_.kind_.int64_list_))
                     : reinterpret_cast<const ::rocal::tensorflow::Int64List&>(::rocal::tensorflow::_Int64List_default_instance_);
}
inline const ::rocal::tensorflow::Int64List& Feature::int64_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.Feature.int64_list)
  return _internal_int64_list();
}
inline ::rocal::tensorflow::Int64List* PROTOBUF_NULLABLE Feature::unsafe_arena_release_int64_list() {
  // @@protoc_insertion_point(field_unsafe_arena_release:rocal.tensorflow.Feature.int64_list)
  if (kind_case() == kInt64List) {
    clear_has_kind();
    auto* temp = reinterpret_cast<::rocal::tensorflow::Int64List*>(_impl_.kind_.int64_list_);
    _impl_.kind_.int64_list_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Feature::unsafe_arena_set_allocated_int64_list(
    ::rocal::tensorflow::Int64List* 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_kind();
  if (value) {
    set_has_int64_list();
    _impl_.kind_.int64_list_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:rocal.tensorflow.Feature.int64_list)
}
inline ::rocal::tensorflow::Int64List* PROTOBUF_NONNULL Feature::_internal_mutable_int64_list() {
  if (kind_case() != kInt64List) {
    clear_kind();
    set_has_int64_list();
    _impl_.kind_.int64_list_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::rocal::tensorflow::Int64List>(GetArena()));
  }
  return reinterpret_cast<::rocal::tensorflow::Int64List*>(_impl_.kind_.int64_list_);
}
inline ::rocal::tensorflow::Int64List* PROTOBUF_NONNULL Feature::mutable_int64_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::rocal::tensorflow::Int64List* _msg = _internal_mutable_int64_list();
  // @@protoc_insertion_point(field_mutable:rocal.tensorflow.Feature.int64_list)
  return _msg;
}

inline bool Feature::has_kind() const {
  return kind_case() != KIND_NOT_SET;
}
inline void Feature::clear_has_kind() {
  _impl_._oneof_case_[0] = KIND_NOT_SET;
}
inline Feature::KindCase Feature::kind_case() const {
  return Feature::KindCase(_impl_._oneof_case_[0]);
}
// -------------------------------------------------------------------

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

// Features

// map<string, .rocal.tensorflow.Feature> feature = 1;
inline int Features::_internal_feature_size() const {
  return _internal_feature().size();
}
inline int Features::feature_size() const {
  return _internal_feature_size();
}
inline void Features::clear_feature() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>& Features::_internal_feature() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>& Features::feature() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:rocal.tensorflow.Features.feature)
  return _internal_feature();
}
inline ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>* PROTOBUF_NONNULL Features::_internal_mutable_feature() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.feature_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::rocal::tensorflow::Feature>* PROTOBUF_NONNULL Features::mutable_feature()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_map:rocal.tensorflow.Features.feature)
  return _internal_mutable_feature();
}

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

// FeatureList

// repeated .rocal.tensorflow.Feature feature = 1;
inline int FeatureList::_internal_feature_size() const {
  return _internal_feature().size();
}
inline int FeatureList::feature_size() const {
  return _internal_feature_size();
}
inline void FeatureList::clear_feature() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::rocal::tensorflow::Feature* PROTOBUF_NONNULL FeatureList::mutable_feature(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:rocal.tensorflow.FeatureList.feature)
  return _internal_mutable_feature()->Mutable(index);
}
inline ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>* PROTOBUF_NONNULL FeatureList::mutable_feature()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:rocal.tensorflow.FeatureList.feature)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_feature();
}
inline const ::rocal::tensorflow::Feature& FeatureList::feature(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:rocal.tensorflow.FeatureList.feature)
  return _internal_feature().Get(index);
}
inline ::rocal::tensorflow::Feature* PROTOBUF_NONNULL FeatureList::add_feature()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::rocal::tensorflow::Feature* _add =
      _internal_mutable_feature()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:rocal.tensorflow.FeatureList.feature)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>& FeatureList::feature() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:rocal.tensorflow.FeatureList.feature)
  return _internal_feature();
}
inline const ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>&
FeatureList::_internal_feature() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_;
}
inline ::google::protobuf::RepeatedPtrField<::rocal::tensorflow::Feature>* PROTOBUF_NONNULL
FeatureList::_internal_mutable_feature() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.feature_;
}

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

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

// FeatureLists

// map<string, .rocal.tensorflow.FeatureList> feature_list = 1;
inline int FeatureLists::_internal_feature_list_size() const {
  return _internal_feature_list().size();
}
inline int FeatureLists::feature_list_size() const {
  return _internal_feature_list_size();
}
inline void FeatureLists::clear_feature_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.feature_list_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>& FeatureLists::_internal_feature_list() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.feature_list_.GetMap();
}
inline const ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>& FeatureLists::feature_list() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:rocal.tensorflow.FeatureLists.feature_list)
  return _internal_feature_list();
}
inline ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>* PROTOBUF_NONNULL FeatureLists::_internal_mutable_feature_list() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.feature_list_.MutableMap();
}
inline ::google::protobuf::Map<::std::string, ::rocal::tensorflow::FeatureList>* PROTOBUF_NONNULL FeatureLists::mutable_feature_list()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_map:rocal.tensorflow.FeatureLists.feature_list)
  return _internal_mutable_feature_list();
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace tensorflow
}  // namespace rocal


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // feature_2eproto_2epb_2eh
