text: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: caffe2/proto/hsm.proto
  
  #ifndef GOOGLE_PROTOBUF_INCLUDED_caffe2_2fproto_2fhsm_2eproto
  #define GOOGLE_PROTOBUF_INCLUDED_caffe2_2fproto_2fhsm_2eproto
  
  #include <limits>
  #include <string>
  
  #include <google/protobuf/port_def.inc>
  #if PROTOBUF_VERSION < 3011000
  #error This file was generated by a newer version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please update
  #error your headers.
  #endif
  #if 3011004 < PROTOBUF_MIN_PROTOC_VERSION
  #error This file was generated by an older version of protoc which is
  #error incompatible with your Protocol Buffer headers. Please
  #error regenerate this file with a newer version of protoc.
  #endif
  
  #include <google/protobuf/port_undef.inc>
  #include <google/protobuf/io/coded_stream.h>
  #include <google/protobuf/arena.h>
  #include <google/protobuf/arenastring.h>
  #include <google/protobuf/generated_message_table_driven.h>
  #include <google/protobuf/generated_message_util.h>
  #include <google/protobuf/inlined_string_field.h>
  #include <google/protobuf/metadata.h>
  #include <google/protobuf/generated_message_reflection.h>
  #include <google/protobuf/message.h>
  #include <google/protobuf/repeated_field.h>  // IWYU pragma: export
  #include <google/protobuf/extension_set.h>  // IWYU pragma: export
  #include <google/protobuf/unknown_field_set.h>
  // @@protoc_insertion_point(includes)
  #include <google/protobuf/port_def.inc>
  #define PROTOBUF_INTERNAL_EXPORT_caffe2_2fproto_2fhsm_2eproto TORCH_API
  PROTOBUF_NAMESPACE_OPEN
  namespace internal {
  class AnyMetadata;
  }  // namespace internal
  PROTOBUF_NAMESPACE_CLOSE
  
  // Internal implementation detail -- do not use these members.
  struct TORCH_API TableStruct_caffe2_2fproto_2fhsm_2eproto {
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[5]
      PROTOBUF_SECTION_VARIABLE(protodesc_cold);
    static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
    static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
    static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
  };
  extern TORCH_API const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_caffe2_2fproto_2fhsm_2eproto;
  namespace caffe2 { const ::std::string& GetEmptyStringAlreadyInited(); 
  class HierarchyProto;
  class HierarchyProtoDefaultTypeInternal;
  TORCH_API extern HierarchyProtoDefaultTypeInternal _HierarchyProto_default_instance_;
  class NodeProto;
  class NodeProtoDefaultTypeInternal;
  TORCH_API extern NodeProtoDefaultTypeInternal _NodeProto_default_instance_;
  class PathNodeProto;
  class PathNodeProtoDefaultTypeInternal;
  TORCH_API extern PathNodeProtoDefaultTypeInternal _PathNodeProto_default_instance_;
  class PathProto;
  class PathProtoDefaultTypeInternal;
  TORCH_API extern PathProtoDefaultTypeInternal _PathProto_default_instance_;
  class TreeProto;
  class TreeProtoDefaultTypeInternal;
  TORCH_API extern TreeProtoDefaultTypeInternal _TreeProto_default_instance_;
  }  // namespace caffe2
  PROTOBUF_NAMESPACE_OPEN
  template<> TORCH_API ::caffe2::HierarchyProto* Arena::CreateMaybeMessage<::caffe2::HierarchyProto>(Arena*);
  template<> TORCH_API ::caffe2::NodeProto* Arena::CreateMaybeMessage<::caffe2::NodeProto>(Arena*);
  template<> TORCH_API ::caffe2::PathNodeProto* Arena::CreateMaybeMessage<::caffe2::PathNodeProto>(Arena*);
  template<> TORCH_API ::caffe2::PathProto* Arena::CreateMaybeMessage<::caffe2::PathProto>(Arena*);
  template<> TORCH_API ::caffe2::TreeProto* Arena::CreateMaybeMessage<::caffe2::TreeProto>(Arena*);
  PROTOBUF_NAMESPACE_CLOSE
  namespace caffe2 {
  
  // ===================================================================
  
  class TORCH_API NodeProto :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:caffe2.NodeProto) */ {
   public:
    NodeProto();
    virtual ~NodeProto();
  
    NodeProto(const NodeProto& from);
    NodeProto(NodeProto&& from) noexcept
      : NodeProto() {
      *this = ::std::move(from);
    }
  
    inline NodeProto& operator=(const NodeProto& from) {
      CopyFrom(from);
      return *this;
    }
    inline NodeProto& operator=(NodeProto&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const NodeProto& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const NodeProto* internal_default_instance() {
      return reinterpret_cast<const NodeProto*>(
                 &_NodeProto_default_instance_);
    }
    static int const kIndexInFileMessages =
      0;
  
    friend void swap(NodeProto& a, NodeProto& b) {
      a.Swap(&b);
    }
    inline void Swap(NodeProto* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline NodeProto* New() const final {
      return CreateMaybeMessage<NodeProto>(nullptr);
    }
  
    NodeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<NodeProto>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const NodeProto& from);
    void MergeFrom(const NodeProto& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(NodeProto* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "caffe2.NodeProto";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_caffe2_2fproto_2fhsm_2eproto);
      return ::descriptor_table_caffe2_2fproto_2fhsm_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kChildrenFieldNumber = 1,
      kWordIdsFieldNumber = 2,
      kScoresFieldNumber = 5,
      kNameFieldNumber = 4,
      kOffsetFieldNumber = 3,
    };
    // repeated .caffe2.NodeProto children = 1;
    int children_size() const;
    private:
    int _internal_children_size() const;
    public:
    void clear_children();
    ::caffe2::NodeProto* mutable_children(int index);
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::NodeProto >*
        mutable_children();
    private:
    const ::caffe2::NodeProto& _internal_children(int index) const;
    ::caffe2::NodeProto* _internal_add_children();
    public:
    const ::caffe2::NodeProto& children(int index) const;
    ::caffe2::NodeProto* add_children();
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::NodeProto >&
        children() const;
  
    // repeated int32 word_ids = 2;
    int word_ids_size() const;
    private:
    int _internal_word_ids_size() const;
    public:
    void clear_word_ids();
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_word_ids(int index) const;
    const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
        _internal_word_ids() const;
    void _internal_add_word_ids(::PROTOBUF_NAMESPACE_ID::int32 value);
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
        _internal_mutable_word_ids();
    public:
    ::PROTOBUF_NAMESPACE_ID::int32 word_ids(int index) const;
    void set_word_ids(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
    void add_word_ids(::PROTOBUF_NAMESPACE_ID::int32 value);
    const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
        word_ids() const;
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
        mutable_word_ids();
  
    // repeated float scores = 5;
    int scores_size() const;
    private:
    int _internal_scores_size() const;
    public:
    void clear_scores();
    private:
    float _internal_scores(int index) const;
    const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
        _internal_scores() const;
    void _internal_add_scores(float value);
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
        _internal_mutable_scores();
    public:
    float scores(int index) const;
    void set_scores(int index, float value);
    void add_scores(float value);
    const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
        scores() const;
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
        mutable_scores();
  
    // optional string name = 4;
    bool has_name() const;
    private:
    bool _internal_has_name() const;
    public:
    void clear_name();
    const std::string& name() const;
    void set_name(const std::string& value);
    void set_name(std::string&& value);
    void set_name(const char* value);
    void set_name(const char* value, size_t size);
    std::string* mutable_name();
    std::string* release_name();
    void set_allocated_name(std::string* name);
    private:
    const std::string& _internal_name() const;
    void _internal_set_name(const std::string& value);
    std::string* _internal_mutable_name();
    public:
  
    // optional int32 offset = 3;
    bool has_offset() const;
    private:
    bool _internal_has_offset() const;
    public:
    void clear_offset();
    ::PROTOBUF_NAMESPACE_ID::int32 offset() const;
    void set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_offset() const;
    void _internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // @@protoc_insertion_point(class_scope:caffe2.NodeProto)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::NodeProto > children_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > word_ids_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< float > scores_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
    ::PROTOBUF_NAMESPACE_ID::int32 offset_;
    friend struct ::TableStruct_caffe2_2fproto_2fhsm_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TORCH_API TreeProto :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:caffe2.TreeProto) */ {
   public:
    TreeProto();
    virtual ~TreeProto();
  
    TreeProto(const TreeProto& from);
    TreeProto(TreeProto&& from) noexcept
      : TreeProto() {
      *this = ::std::move(from);
    }
  
    inline TreeProto& operator=(const TreeProto& from) {
      CopyFrom(from);
      return *this;
    }
    inline TreeProto& operator=(TreeProto&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const TreeProto& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const TreeProto* internal_default_instance() {
      return reinterpret_cast<const TreeProto*>(
                 &_TreeProto_default_instance_);
    }
    static int const kIndexInFileMessages =
      1;
  
    friend void swap(TreeProto& a, TreeProto& b) {
      a.Swap(&b);
    }
    inline void Swap(TreeProto* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline TreeProto* New() const final {
      return CreateMaybeMessage<TreeProto>(nullptr);
    }
  
    TreeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<TreeProto>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const TreeProto& from);
    void MergeFrom(const TreeProto& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(TreeProto* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "caffe2.TreeProto";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_caffe2_2fproto_2fhsm_2eproto);
      return ::descriptor_table_caffe2_2fproto_2fhsm_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kRootNodeFieldNumber = 1,
    };
    // optional .caffe2.NodeProto root_node = 1;
    bool has_root_node() const;
    private:
    bool _internal_has_root_node() const;
    public:
    void clear_root_node();
    const ::caffe2::NodeProto& root_node() const;
    ::caffe2::NodeProto* release_root_node();
    ::caffe2::NodeProto* mutable_root_node();
    void set_allocated_root_node(::caffe2::NodeProto* root_node);
    private:
    const ::caffe2::NodeProto& _internal_root_node() const;
    ::caffe2::NodeProto* _internal_mutable_root_node();
    public:
  
    // @@protoc_insertion_point(class_scope:caffe2.TreeProto)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::caffe2::NodeProto* root_node_;
    friend struct ::TableStruct_caffe2_2fproto_2fhsm_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TORCH_API HierarchyProto :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:caffe2.HierarchyProto) */ {
   public:
    HierarchyProto();
    virtual ~HierarchyProto();
  
    HierarchyProto(const HierarchyProto& from);
    HierarchyProto(HierarchyProto&& from) noexcept
      : HierarchyProto() {
      *this = ::std::move(from);
    }
  
    inline HierarchyProto& operator=(const HierarchyProto& from) {
      CopyFrom(from);
      return *this;
    }
    inline HierarchyProto& operator=(HierarchyProto&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const HierarchyProto& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const HierarchyProto* internal_default_instance() {
      return reinterpret_cast<const HierarchyProto*>(
                 &_HierarchyProto_default_instance_);
    }
    static int const kIndexInFileMessages =
      2;
  
    friend void swap(HierarchyProto& a, HierarchyProto& b) {
      a.Swap(&b);
    }
    inline void Swap(HierarchyProto* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline HierarchyProto* New() const final {
      return CreateMaybeMessage<HierarchyProto>(nullptr);
    }
  
    HierarchyProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<HierarchyProto>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const HierarchyProto& from);
    void MergeFrom(const HierarchyProto& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(HierarchyProto* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "caffe2.HierarchyProto";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_caffe2_2fproto_2fhsm_2eproto);
      return ::descriptor_table_caffe2_2fproto_2fhsm_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kPathsFieldNumber = 2,
      kSizeFieldNumber = 1,
    };
    // repeated .caffe2.PathProto paths = 2;
    int paths_size() const;
    private:
    int _internal_paths_size() const;
    public:
    void clear_paths();
    ::caffe2::PathProto* mutable_paths(int index);
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathProto >*
        mutable_paths();
    private:
    const ::caffe2::PathProto& _internal_paths(int index) const;
    ::caffe2::PathProto* _internal_add_paths();
    public:
    const ::caffe2::PathProto& paths(int index) const;
    ::caffe2::PathProto* add_paths();
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathProto >&
        paths() const;
  
    // optional int32 size = 1;
    bool has_size() const;
    private:
    bool _internal_has_size() const;
    public:
    void clear_size();
    ::PROTOBUF_NAMESPACE_ID::int32 size() const;
    void set_size(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_size() const;
    void _internal_set_size(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // @@protoc_insertion_point(class_scope:caffe2.HierarchyProto)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathProto > paths_;
    ::PROTOBUF_NAMESPACE_ID::int32 size_;
    friend struct ::TableStruct_caffe2_2fproto_2fhsm_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TORCH_API PathProto :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:caffe2.PathProto) */ {
   public:
    PathProto();
    virtual ~PathProto();
  
    PathProto(const PathProto& from);
    PathProto(PathProto&& from) noexcept
      : PathProto() {
      *this = ::std::move(from);
    }
  
    inline PathProto& operator=(const PathProto& from) {
      CopyFrom(from);
      return *this;
    }
    inline PathProto& operator=(PathProto&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const PathProto& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const PathProto* internal_default_instance() {
      return reinterpret_cast<const PathProto*>(
                 &_PathProto_default_instance_);
    }
    static int const kIndexInFileMessages =
      3;
  
    friend void swap(PathProto& a, PathProto& b) {
      a.Swap(&b);
    }
    inline void Swap(PathProto* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline PathProto* New() const final {
      return CreateMaybeMessage<PathProto>(nullptr);
    }
  
    PathProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<PathProto>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const PathProto& from);
    void MergeFrom(const PathProto& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(PathProto* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "caffe2.PathProto";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_caffe2_2fproto_2fhsm_2eproto);
      return ::descriptor_table_caffe2_2fproto_2fhsm_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kPathNodesFieldNumber = 2,
      kWordIdFieldNumber = 1,
    };
    // repeated .caffe2.PathNodeProto path_nodes = 2;
    int path_nodes_size() const;
    private:
    int _internal_path_nodes_size() const;
    public:
    void clear_path_nodes();
    ::caffe2::PathNodeProto* mutable_path_nodes(int index);
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathNodeProto >*
        mutable_path_nodes();
    private:
    const ::caffe2::PathNodeProto& _internal_path_nodes(int index) const;
    ::caffe2::PathNodeProto* _internal_add_path_nodes();
    public:
    const ::caffe2::PathNodeProto& path_nodes(int index) const;
    ::caffe2::PathNodeProto* add_path_nodes();
    const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathNodeProto >&
        path_nodes() const;
  
    // optional int32 word_id = 1;
    bool has_word_id() const;
    private:
    bool _internal_has_word_id() const;
    public:
    void clear_word_id();
    ::PROTOBUF_NAMESPACE_ID::int32 word_id() const;
    void set_word_id(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_word_id() const;
    void _internal_set_word_id(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // @@protoc_insertion_point(class_scope:caffe2.PathProto)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathNodeProto > path_nodes_;
    ::PROTOBUF_NAMESPACE_ID::int32 word_id_;
    friend struct ::TableStruct_caffe2_2fproto_2fhsm_2eproto;
  };
  // -------------------------------------------------------------------
  
  class TORCH_API PathNodeProto :
      public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:caffe2.PathNodeProto) */ {
   public:
    PathNodeProto();
    virtual ~PathNodeProto();
  
    PathNodeProto(const PathNodeProto& from);
    PathNodeProto(PathNodeProto&& from) noexcept
      : PathNodeProto() {
      *this = ::std::move(from);
    }
  
    inline PathNodeProto& operator=(const PathNodeProto& from) {
      CopyFrom(from);
      return *this;
    }
    inline PathNodeProto& operator=(PathNodeProto&& from) noexcept {
      if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
        if (this != &from) InternalSwap(&from);
      } else {
        CopyFrom(from);
      }
      return *this;
    }
  
    inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
      return _internal_metadata_.unknown_fields();
    }
    inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
      return _internal_metadata_.mutable_unknown_fields();
    }
  
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
      return GetDescriptor();
    }
    static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
      return GetMetadataStatic().descriptor;
    }
    static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
      return GetMetadataStatic().reflection;
    }
    static const PathNodeProto& default_instance();
  
    static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
    static inline const PathNodeProto* internal_default_instance() {
      return reinterpret_cast<const PathNodeProto*>(
                 &_PathNodeProto_default_instance_);
    }
    static int const kIndexInFileMessages =
      4;
  
    friend void swap(PathNodeProto& a, PathNodeProto& b) {
      a.Swap(&b);
    }
    inline void Swap(PathNodeProto* other) {
      if (other == this) return;
      InternalSwap(other);
    }
  
    // implements Message ----------------------------------------------
  
    inline PathNodeProto* New() const final {
      return CreateMaybeMessage<PathNodeProto>(nullptr);
    }
  
    PathNodeProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
      return CreateMaybeMessage<PathNodeProto>(arena);
    }
    void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
    void CopyFrom(const PathNodeProto& from);
    void MergeFrom(const PathNodeProto& from);
    PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
    bool IsInitialized() const final;
  
    size_t ByteSizeLong() const final;
    const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
    ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
        ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
    int GetCachedSize() const final { return _cached_size_.Get(); }
  
    private:
    inline void SharedCtor();
    inline void SharedDtor();
    void SetCachedSize(int size) const final;
    void InternalSwap(PathNodeProto* other);
    friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
    static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
      return "caffe2.PathNodeProto";
    }
    private:
    inline ::PROTOBUF_NAMESPACE_ID::Arena* GetArenaNoVirtual() const {
      return nullptr;
    }
    inline void* MaybeArenaPtr() const {
      return nullptr;
    }
    public:
  
    ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
    private:
    static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
      ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_caffe2_2fproto_2fhsm_2eproto);
      return ::descriptor_table_caffe2_2fproto_2fhsm_2eproto.file_level_metadata[kIndexInFileMessages];
    }
  
    public:
  
    // nested types ----------------------------------------------------
  
    // accessors -------------------------------------------------------
  
    enum : int {
      kIndexFieldNumber = 1,
      kLengthFieldNumber = 2,
      kTargetFieldNumber = 3,
    };
    // optional int32 index = 1;
    bool has_index() const;
    private:
    bool _internal_has_index() const;
    public:
    void clear_index();
    ::PROTOBUF_NAMESPACE_ID::int32 index() const;
    void set_index(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_index() const;
    void _internal_set_index(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // optional int32 length = 2;
    bool has_length() const;
    private:
    bool _internal_has_length() const;
    public:
    void clear_length();
    ::PROTOBUF_NAMESPACE_ID::int32 length() const;
    void set_length(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_length() const;
    void _internal_set_length(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // optional int32 target = 3;
    bool has_target() const;
    private:
    bool _internal_has_target() const;
    public:
    void clear_target();
    ::PROTOBUF_NAMESPACE_ID::int32 target() const;
    void set_target(::PROTOBUF_NAMESPACE_ID::int32 value);
    private:
    ::PROTOBUF_NAMESPACE_ID::int32 _internal_target() const;
    void _internal_set_target(::PROTOBUF_NAMESPACE_ID::int32 value);
    public:
  
    // @@protoc_insertion_point(class_scope:caffe2.PathNodeProto)
   private:
    class _Internal;
  
    ::PROTOBUF_NAMESPACE_ID::internal::InternalMetadataWithArena _internal_metadata_;
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::int32 index_;
    ::PROTOBUF_NAMESPACE_ID::int32 length_;
    ::PROTOBUF_NAMESPACE_ID::int32 target_;
    friend struct ::TableStruct_caffe2_2fproto_2fhsm_2eproto;
  };
  // ===================================================================
  
  
  // ===================================================================
  
  #ifdef __GNUC__
    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wstrict-aliasing"
  #endif  // __GNUC__
  // NodeProto
  
  // repeated .caffe2.NodeProto children = 1;
  inline int NodeProto::_internal_children_size() const {
    return children_.size();
  }
  inline int NodeProto::children_size() const {
    return _internal_children_size();
  }
  inline void NodeProto::clear_children() {
    children_.Clear();
  }
  inline ::caffe2::NodeProto* NodeProto::mutable_children(int index) {
    // @@protoc_insertion_point(field_mutable:caffe2.NodeProto.children)
    return children_.Mutable(index);
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::NodeProto >*
  NodeProto::mutable_children() {
    // @@protoc_insertion_point(field_mutable_list:caffe2.NodeProto.children)
    return &children_;
  }
  inline const ::caffe2::NodeProto& NodeProto::_internal_children(int index) const {
    return children_.Get(index);
  }
  inline const ::caffe2::NodeProto& NodeProto::children(int index) const {
    // @@protoc_insertion_point(field_get:caffe2.NodeProto.children)
    return _internal_children(index);
  }
  inline ::caffe2::NodeProto* NodeProto::_internal_add_children() {
    return children_.Add();
  }
  inline ::caffe2::NodeProto* NodeProto::add_children() {
    // @@protoc_insertion_point(field_add:caffe2.NodeProto.children)
    return _internal_add_children();
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::NodeProto >&
  NodeProto::children() const {
    // @@protoc_insertion_point(field_list:caffe2.NodeProto.children)
    return children_;
  }
  
  // repeated int32 word_ids = 2;
  inline int NodeProto::_internal_word_ids_size() const {
    return word_ids_.size();
  }
  inline int NodeProto::word_ids_size() const {
    return _internal_word_ids_size();
  }
  inline void NodeProto::clear_word_ids() {
    word_ids_.Clear();
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 NodeProto::_internal_word_ids(int index) const {
    return word_ids_.Get(index);
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 NodeProto::word_ids(int index) const {
    // @@protoc_insertion_point(field_get:caffe2.NodeProto.word_ids)
    return _internal_word_ids(index);
  }
  inline void NodeProto::set_word_ids(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
    word_ids_.Set(index, value);
    // @@protoc_insertion_point(field_set:caffe2.NodeProto.word_ids)
  }
  inline void NodeProto::_internal_add_word_ids(::PROTOBUF_NAMESPACE_ID::int32 value) {
    word_ids_.Add(value);
  }
  inline void NodeProto::add_word_ids(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_add_word_ids(value);
    // @@protoc_insertion_point(field_add:caffe2.NodeProto.word_ids)
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
  NodeProto::_internal_word_ids() const {
    return word_ids_;
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
  NodeProto::word_ids() const {
    // @@protoc_insertion_point(field_list:caffe2.NodeProto.word_ids)
    return _internal_word_ids();
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
  NodeProto::_internal_mutable_word_ids() {
    return &word_ids_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
  NodeProto::mutable_word_ids() {
    // @@protoc_insertion_point(field_mutable_list:caffe2.NodeProto.word_ids)
    return _internal_mutable_word_ids();
  }
  
  // optional int32 offset = 3;
  inline bool NodeProto::_internal_has_offset() const {
    bool value = (_has_bits_[0] & 0x00000002u) != 0;
    return value;
  }
  inline bool NodeProto::has_offset() const {
    return _internal_has_offset();
  }
  inline void NodeProto::clear_offset() {
    offset_ = 0;
    _has_bits_[0] &= ~0x00000002u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 NodeProto::_internal_offset() const {
    return offset_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 NodeProto::offset() const {
    // @@protoc_insertion_point(field_get:caffe2.NodeProto.offset)
    return _internal_offset();
  }
  inline void NodeProto::_internal_set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000002u;
    offset_ = value;
  }
  inline void NodeProto::set_offset(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_offset(value);
    // @@protoc_insertion_point(field_set:caffe2.NodeProto.offset)
  }
  
  // optional string name = 4;
  inline bool NodeProto::_internal_has_name() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool NodeProto::has_name() const {
    return _internal_has_name();
  }
  inline void NodeProto::clear_name() {
    name_.ClearToEmptyNoArena(&GetEmptyStringAlreadyInited());
    _has_bits_[0] &= ~0x00000001u;
  }
  inline const std::string& NodeProto::name() const {
    // @@protoc_insertion_point(field_get:caffe2.NodeProto.name)
    return _internal_name();
  }
  inline void NodeProto::set_name(const std::string& value) {
    _internal_set_name(value);
    // @@protoc_insertion_point(field_set:caffe2.NodeProto.name)
  }
  inline std::string* NodeProto::mutable_name() {
    // @@protoc_insertion_point(field_mutable:caffe2.NodeProto.name)
    return _internal_mutable_name();
  }
  inline const std::string& NodeProto::_internal_name() const {
    return name_.GetNoArena();
  }
  inline void NodeProto::_internal_set_name(const std::string& value) {
    _has_bits_[0] |= 0x00000001u;
    name_.SetNoArena(&GetEmptyStringAlreadyInited(), value);
  }
  inline void NodeProto::set_name(std::string&& value) {
    _has_bits_[0] |= 0x00000001u;
    name_.SetNoArena(
      &GetEmptyStringAlreadyInited(), ::std::move(value));
    // @@protoc_insertion_point(field_set_rvalue:caffe2.NodeProto.name)
  }
  inline void NodeProto::set_name(const char* value) {
    GOOGLE_DCHECK(value != nullptr);
    _has_bits_[0] |= 0x00000001u;
    name_.SetNoArena(&GetEmptyStringAlreadyInited(), ::std::string(value));
    // @@protoc_insertion_point(field_set_char:caffe2.NodeProto.name)
  }
  inline void NodeProto::set_name(const char* value, size_t size) {
    _has_bits_[0] |= 0x00000001u;
    name_.SetNoArena(&GetEmptyStringAlreadyInited(),
        ::std::string(reinterpret_cast<const char*>(value), size));
    // @@protoc_insertion_point(field_set_pointer:caffe2.NodeProto.name)
  }
  inline std::string* NodeProto::_internal_mutable_name() {
    _has_bits_[0] |= 0x00000001u;
    return name_.MutableNoArena(&GetEmptyStringAlreadyInited());
  }
  inline std::string* NodeProto::release_name() {
    // @@protoc_insertion_point(field_release:caffe2.NodeProto.name)
    if (!_internal_has_name()) {
      return nullptr;
    }
    _has_bits_[0] &= ~0x00000001u;
    return name_.ReleaseNonDefaultNoArena(&GetEmptyStringAlreadyInited());
  }
  inline void NodeProto::set_allocated_name(std::string* name) {
    if (name != nullptr) {
      _has_bits_[0] |= 0x00000001u;
    } else {
      _has_bits_[0] &= ~0x00000001u;
    }
    name_.SetAllocatedNoArena(&GetEmptyStringAlreadyInited(), name);
    // @@protoc_insertion_point(field_set_allocated:caffe2.NodeProto.name)
  }
  
  // repeated float scores = 5;
  inline int NodeProto::_internal_scores_size() const {
    return scores_.size();
  }
  inline int NodeProto::scores_size() const {
    return _internal_scores_size();
  }
  inline void NodeProto::clear_scores() {
    scores_.Clear();
  }
  inline float NodeProto::_internal_scores(int index) const {
    return scores_.Get(index);
  }
  inline float NodeProto::scores(int index) const {
    // @@protoc_insertion_point(field_get:caffe2.NodeProto.scores)
    return _internal_scores(index);
  }
  inline void NodeProto::set_scores(int index, float value) {
    scores_.Set(index, value);
    // @@protoc_insertion_point(field_set:caffe2.NodeProto.scores)
  }
  inline void NodeProto::_internal_add_scores(float value) {
    scores_.Add(value);
  }
  inline void NodeProto::add_scores(float value) {
    _internal_add_scores(value);
    // @@protoc_insertion_point(field_add:caffe2.NodeProto.scores)
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
  NodeProto::_internal_scores() const {
    return scores_;
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >&
  NodeProto::scores() const {
    // @@protoc_insertion_point(field_list:caffe2.NodeProto.scores)
    return _internal_scores();
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
  NodeProto::_internal_mutable_scores() {
    return &scores_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< float >*
  NodeProto::mutable_scores() {
    // @@protoc_insertion_point(field_mutable_list:caffe2.NodeProto.scores)
    return _internal_mutable_scores();
  }
  
  // -------------------------------------------------------------------
  
  // TreeProto
  
  // optional .caffe2.NodeProto root_node = 1;
  inline bool TreeProto::_internal_has_root_node() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    PROTOBUF_ASSUME(!value || root_node_ != nullptr);
    return value;
  }
  inline bool TreeProto::has_root_node() const {
    return _internal_has_root_node();
  }
  inline void TreeProto::clear_root_node() {
    if (root_node_ != nullptr) root_node_->Clear();
    _has_bits_[0] &= ~0x00000001u;
  }
  inline const ::caffe2::NodeProto& TreeProto::_internal_root_node() const {
    const ::caffe2::NodeProto* p = root_node_;
    return p != nullptr ? *p : *reinterpret_cast<const ::caffe2::NodeProto*>(
        &::caffe2::_NodeProto_default_instance_);
  }
  inline const ::caffe2::NodeProto& TreeProto::root_node() const {
    // @@protoc_insertion_point(field_get:caffe2.TreeProto.root_node)
    return _internal_root_node();
  }
  inline ::caffe2::NodeProto* TreeProto::release_root_node() {
    // @@protoc_insertion_point(field_release:caffe2.TreeProto.root_node)
    _has_bits_[0] &= ~0x00000001u;
    ::caffe2::NodeProto* temp = root_node_;
    root_node_ = nullptr;
    return temp;
  }
  inline ::caffe2::NodeProto* TreeProto::_internal_mutable_root_node() {
    _has_bits_[0] |= 0x00000001u;
    if (root_node_ == nullptr) {
      auto* p = CreateMaybeMessage<::caffe2::NodeProto>(GetArenaNoVirtual());
      root_node_ = p;
    }
    return root_node_;
  }
  inline ::caffe2::NodeProto* TreeProto::mutable_root_node() {
    // @@protoc_insertion_point(field_mutable:caffe2.TreeProto.root_node)
    return _internal_mutable_root_node();
  }
  inline void TreeProto::set_allocated_root_node(::caffe2::NodeProto* root_node) {
    ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaNoVirtual();
    if (message_arena == nullptr) {
      delete root_node_;
    }
    if (root_node) {
      ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = nullptr;
      if (message_arena != submessage_arena) {
        root_node = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
            message_arena, root_node, submessage_arena);
      }
      _has_bits_[0] |= 0x00000001u;
    } else {
      _has_bits_[0] &= ~0x00000001u;
    }
    root_node_ = root_node;
    // @@protoc_insertion_point(field_set_allocated:caffe2.TreeProto.root_node)
  }
  
  // -------------------------------------------------------------------
  
  // HierarchyProto
  
  // optional int32 size = 1;
  inline bool HierarchyProto::_internal_has_size() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool HierarchyProto::has_size() const {
    return _internal_has_size();
  }
  inline void HierarchyProto::clear_size() {
    size_ = 0;
    _has_bits_[0] &= ~0x00000001u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 HierarchyProto::_internal_size() const {
    return size_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 HierarchyProto::size() const {
    // @@protoc_insertion_point(field_get:caffe2.HierarchyProto.size)
    return _internal_size();
  }
  inline void HierarchyProto::_internal_set_size(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000001u;
    size_ = value;
  }
  inline void HierarchyProto::set_size(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_size(value);
    // @@protoc_insertion_point(field_set:caffe2.HierarchyProto.size)
  }
  
  // repeated .caffe2.PathProto paths = 2;
  inline int HierarchyProto::_internal_paths_size() const {
    return paths_.size();
  }
  inline int HierarchyProto::paths_size() const {
    return _internal_paths_size();
  }
  inline void HierarchyProto::clear_paths() {
    paths_.Clear();
  }
  inline ::caffe2::PathProto* HierarchyProto::mutable_paths(int index) {
    // @@protoc_insertion_point(field_mutable:caffe2.HierarchyProto.paths)
    return paths_.Mutable(index);
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathProto >*
  HierarchyProto::mutable_paths() {
    // @@protoc_insertion_point(field_mutable_list:caffe2.HierarchyProto.paths)
    return &paths_;
  }
  inline const ::caffe2::PathProto& HierarchyProto::_internal_paths(int index) const {
    return paths_.Get(index);
  }
  inline const ::caffe2::PathProto& HierarchyProto::paths(int index) const {
    // @@protoc_insertion_point(field_get:caffe2.HierarchyProto.paths)
    return _internal_paths(index);
  }
  inline ::caffe2::PathProto* HierarchyProto::_internal_add_paths() {
    return paths_.Add();
  }
  inline ::caffe2::PathProto* HierarchyProto::add_paths() {
    // @@protoc_insertion_point(field_add:caffe2.HierarchyProto.paths)
    return _internal_add_paths();
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathProto >&
  HierarchyProto::paths() const {
    // @@protoc_insertion_point(field_list:caffe2.HierarchyProto.paths)
    return paths_;
  }
  
  // -------------------------------------------------------------------
  
  // PathProto
  
  // optional int32 word_id = 1;
  inline bool PathProto::_internal_has_word_id() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool PathProto::has_word_id() const {
    return _internal_has_word_id();
  }
  inline void PathProto::clear_word_id() {
    word_id_ = 0;
    _has_bits_[0] &= ~0x00000001u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathProto::_internal_word_id() const {
    return word_id_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathProto::word_id() const {
    // @@protoc_insertion_point(field_get:caffe2.PathProto.word_id)
    return _internal_word_id();
  }
  inline void PathProto::_internal_set_word_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000001u;
    word_id_ = value;
  }
  inline void PathProto::set_word_id(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_word_id(value);
    // @@protoc_insertion_point(field_set:caffe2.PathProto.word_id)
  }
  
  // repeated .caffe2.PathNodeProto path_nodes = 2;
  inline int PathProto::_internal_path_nodes_size() const {
    return path_nodes_.size();
  }
  inline int PathProto::path_nodes_size() const {
    return _internal_path_nodes_size();
  }
  inline void PathProto::clear_path_nodes() {
    path_nodes_.Clear();
  }
  inline ::caffe2::PathNodeProto* PathProto::mutable_path_nodes(int index) {
    // @@protoc_insertion_point(field_mutable:caffe2.PathProto.path_nodes)
    return path_nodes_.Mutable(index);
  }
  inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathNodeProto >*
  PathProto::mutable_path_nodes() {
    // @@protoc_insertion_point(field_mutable_list:caffe2.PathProto.path_nodes)
    return &path_nodes_;
  }
  inline const ::caffe2::PathNodeProto& PathProto::_internal_path_nodes(int index) const {
    return path_nodes_.Get(index);
  }
  inline const ::caffe2::PathNodeProto& PathProto::path_nodes(int index) const {
    // @@protoc_insertion_point(field_get:caffe2.PathProto.path_nodes)
    return _internal_path_nodes(index);
  }
  inline ::caffe2::PathNodeProto* PathProto::_internal_add_path_nodes() {
    return path_nodes_.Add();
  }
  inline ::caffe2::PathNodeProto* PathProto::add_path_nodes() {
    // @@protoc_insertion_point(field_add:caffe2.PathProto.path_nodes)
    return _internal_add_path_nodes();
  }
  inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::caffe2::PathNodeProto >&
  PathProto::path_nodes() const {
    // @@protoc_insertion_point(field_list:caffe2.PathProto.path_nodes)
    return path_nodes_;
  }
  
  // -------------------------------------------------------------------
  
  // PathNodeProto
  
  // optional int32 index = 1;
  inline bool PathNodeProto::_internal_has_index() const {
    bool value = (_has_bits_[0] & 0x00000001u) != 0;
    return value;
  }
  inline bool PathNodeProto::has_index() const {
    return _internal_has_index();
  }
  inline void PathNodeProto::clear_index() {
    index_ = 0;
    _has_bits_[0] &= ~0x00000001u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::_internal_index() const {
    return index_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::index() const {
    // @@protoc_insertion_point(field_get:caffe2.PathNodeProto.index)
    return _internal_index();
  }
  inline void PathNodeProto::_internal_set_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000001u;
    index_ = value;
  }
  inline void PathNodeProto::set_index(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_index(value);
    // @@protoc_insertion_point(field_set:caffe2.PathNodeProto.index)
  }
  
  // optional int32 length = 2;
  inline bool PathNodeProto::_internal_has_length() const {
    bool value = (_has_bits_[0] & 0x00000002u) != 0;
    return value;
  }
  inline bool PathNodeProto::has_length() const {
    return _internal_has_length();
  }
  inline void PathNodeProto::clear_length() {
    length_ = 0;
    _has_bits_[0] &= ~0x00000002u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::_internal_length() const {
    return length_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::length() const {
    // @@protoc_insertion_point(field_get:caffe2.PathNodeProto.length)
    return _internal_length();
  }
  inline void PathNodeProto::_internal_set_length(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000002u;
    length_ = value;
  }
  inline void PathNodeProto::set_length(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_length(value);
    // @@protoc_insertion_point(field_set:caffe2.PathNodeProto.length)
  }
  
  // optional int32 target = 3;
  inline bool PathNodeProto::_internal_has_target() const {
    bool value = (_has_bits_[0] & 0x00000004u) != 0;
    return value;
  }
  inline bool PathNodeProto::has_target() const {
    return _internal_has_target();
  }
  inline void PathNodeProto::clear_target() {
    target_ = 0;
    _has_bits_[0] &= ~0x00000004u;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::_internal_target() const {
    return target_;
  }
  inline ::PROTOBUF_NAMESPACE_ID::int32 PathNodeProto::target() const {
    // @@protoc_insertion_point(field_get:caffe2.PathNodeProto.target)
    return _internal_target();
  }
  inline void PathNodeProto::_internal_set_target(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _has_bits_[0] |= 0x00000004u;
    target_ = value;
  }
  inline void PathNodeProto::set_target(::PROTOBUF_NAMESPACE_ID::int32 value) {
    _internal_set_target(value);
    // @@protoc_insertion_point(field_set:caffe2.PathNodeProto.target)
  }
  
  #ifdef __GNUC__
    #pragma GCC diagnostic pop
  #endif  // __GNUC__
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  // -------------------------------------------------------------------
  
  
  // @@protoc_insertion_point(namespace_scope)
  
  }  // namespace caffe2
  
  // @@protoc_insertion_point(global_scope)
  
  #include <google/protobuf/port_undef.inc>
  #endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_caffe2_2fproto_2fhsm_2eproto
  