// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: osi_groundtruth.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_osi_5fgroundtruth_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_osi_5fgroundtruth_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3015000
#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 3015002 < 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/metadata_lite.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>
#include "osi_version.pb.h"
#include "osi_common.pb.h"
#include "osi_environment.pb.h"
#include "osi_trafficsign.pb.h"
#include "osi_trafficlight.pb.h"
#include "osi_roadmarking.pb.h"
#include "osi_lane.pb.h"
#include "osi_object.pb.h"
#include "osi_occupant.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_osi_5fgroundtruth_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_osi_5fgroundtruth_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[1]
    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 const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_osi_5fgroundtruth_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_osi_5fgroundtruth_2eproto_metadata_getter(int index);
namespace osi3 {
class GroundTruth;
struct GroundTruthDefaultTypeInternal;
extern GroundTruthDefaultTypeInternal _GroundTruth_default_instance_;
}  // namespace osi3
PROTOBUF_NAMESPACE_OPEN
template<> ::osi3::GroundTruth* Arena::CreateMaybeMessage<::osi3::GroundTruth>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace osi3 {

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

class GroundTruth PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:osi3.GroundTruth) */ {
 public:
  inline GroundTruth() : GroundTruth(nullptr) {}
  virtual ~GroundTruth();
  explicit constexpr GroundTruth(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  GroundTruth(const GroundTruth& from);
  GroundTruth(GroundTruth&& from) noexcept
    : GroundTruth() {
    *this = ::std::move(from);
  }

  inline GroundTruth& operator=(const GroundTruth& from) {
    CopyFrom(from);
    return *this;
  }
  inline GroundTruth& operator=(GroundTruth&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  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 GroundTruth& default_instance() {
    return *internal_default_instance();
  }
  static inline const GroundTruth* internal_default_instance() {
    return reinterpret_cast<const GroundTruth*>(
               &_GroundTruth_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(GroundTruth& a, GroundTruth& b) {
    a.Swap(&b);
  }
  inline void Swap(GroundTruth* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(GroundTruth* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline GroundTruth* New() const final {
    return CreateMaybeMessage<GroundTruth>(nullptr);
  }

  GroundTruth* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<GroundTruth>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const GroundTruth& from);
  void MergeFrom(const GroundTruth& 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(GroundTruth* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.GroundTruth";
  }
  protected:
  explicit GroundTruth(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    return ::descriptor_table_osi_5fgroundtruth_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStationaryObjectFieldNumber = 4,
    kMovingObjectFieldNumber = 5,
    kTrafficSignFieldNumber = 6,
    kTrafficLightFieldNumber = 7,
    kRoadMarkingFieldNumber = 8,
    kLaneBoundaryFieldNumber = 9,
    kLaneFieldNumber = 10,
    kOccupantFieldNumber = 11,
    kProjStringFieldNumber = 14,
    kMapReferenceFieldNumber = 15,
    kModelReferenceFieldNumber = 16,
    kVersionFieldNumber = 1,
    kTimestampFieldNumber = 2,
    kHostVehicleIdFieldNumber = 3,
    kEnvironmentalConditionsFieldNumber = 12,
    kCountryCodeFieldNumber = 13,
  };
  // repeated .osi3.StationaryObject stationary_object = 4;
  int stationary_object_size() const;
  private:
  int _internal_stationary_object_size() const;
  public:
  void clear_stationary_object();
  ::osi3::StationaryObject* mutable_stationary_object(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StationaryObject >*
      mutable_stationary_object();
  private:
  const ::osi3::StationaryObject& _internal_stationary_object(int index) const;
  ::osi3::StationaryObject* _internal_add_stationary_object();
  public:
  const ::osi3::StationaryObject& stationary_object(int index) const;
  ::osi3::StationaryObject* add_stationary_object();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StationaryObject >&
      stationary_object() const;

  // repeated .osi3.MovingObject moving_object = 5;
  int moving_object_size() const;
  private:
  int _internal_moving_object_size() const;
  public:
  void clear_moving_object();
  ::osi3::MovingObject* mutable_moving_object(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject >*
      mutable_moving_object();
  private:
  const ::osi3::MovingObject& _internal_moving_object(int index) const;
  ::osi3::MovingObject* _internal_add_moving_object();
  public:
  const ::osi3::MovingObject& moving_object(int index) const;
  ::osi3::MovingObject* add_moving_object();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject >&
      moving_object() const;

  // repeated .osi3.TrafficSign traffic_sign = 6;
  int traffic_sign_size() const;
  private:
  int _internal_traffic_sign_size() const;
  public:
  void clear_traffic_sign();
  ::osi3::TrafficSign* mutable_traffic_sign(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficSign >*
      mutable_traffic_sign();
  private:
  const ::osi3::TrafficSign& _internal_traffic_sign(int index) const;
  ::osi3::TrafficSign* _internal_add_traffic_sign();
  public:
  const ::osi3::TrafficSign& traffic_sign(int index) const;
  ::osi3::TrafficSign* add_traffic_sign();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficSign >&
      traffic_sign() const;

  // repeated .osi3.TrafficLight traffic_light = 7;
  int traffic_light_size() const;
  private:
  int _internal_traffic_light_size() const;
  public:
  void clear_traffic_light();
  ::osi3::TrafficLight* mutable_traffic_light(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficLight >*
      mutable_traffic_light();
  private:
  const ::osi3::TrafficLight& _internal_traffic_light(int index) const;
  ::osi3::TrafficLight* _internal_add_traffic_light();
  public:
  const ::osi3::TrafficLight& traffic_light(int index) const;
  ::osi3::TrafficLight* add_traffic_light();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficLight >&
      traffic_light() const;

  // repeated .osi3.RoadMarking road_marking = 8;
  int road_marking_size() const;
  private:
  int _internal_road_marking_size() const;
  public:
  void clear_road_marking();
  ::osi3::RoadMarking* mutable_road_marking(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::RoadMarking >*
      mutable_road_marking();
  private:
  const ::osi3::RoadMarking& _internal_road_marking(int index) const;
  ::osi3::RoadMarking* _internal_add_road_marking();
  public:
  const ::osi3::RoadMarking& road_marking(int index) const;
  ::osi3::RoadMarking* add_road_marking();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::RoadMarking >&
      road_marking() const;

  // repeated .osi3.LaneBoundary lane_boundary = 9;
  int lane_boundary_size() const;
  private:
  int _internal_lane_boundary_size() const;
  public:
  void clear_lane_boundary();
  ::osi3::LaneBoundary* mutable_lane_boundary(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::LaneBoundary >*
      mutable_lane_boundary();
  private:
  const ::osi3::LaneBoundary& _internal_lane_boundary(int index) const;
  ::osi3::LaneBoundary* _internal_add_lane_boundary();
  public:
  const ::osi3::LaneBoundary& lane_boundary(int index) const;
  ::osi3::LaneBoundary* add_lane_boundary();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::LaneBoundary >&
      lane_boundary() const;

  // repeated .osi3.Lane lane = 10;
  int lane_size() const;
  private:
  int _internal_lane_size() const;
  public:
  void clear_lane();
  ::osi3::Lane* mutable_lane(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Lane >*
      mutable_lane();
  private:
  const ::osi3::Lane& _internal_lane(int index) const;
  ::osi3::Lane* _internal_add_lane();
  public:
  const ::osi3::Lane& lane(int index) const;
  ::osi3::Lane* add_lane();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Lane >&
      lane() const;

  // repeated .osi3.Occupant occupant = 11;
  int occupant_size() const;
  private:
  int _internal_occupant_size() const;
  public:
  void clear_occupant();
  ::osi3::Occupant* mutable_occupant(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Occupant >*
      mutable_occupant();
  private:
  const ::osi3::Occupant& _internal_occupant(int index) const;
  ::osi3::Occupant* _internal_add_occupant();
  public:
  const ::osi3::Occupant& occupant(int index) const;
  ::osi3::Occupant* add_occupant();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Occupant >&
      occupant() const;

  // string proj_string = 14;
  void clear_proj_string();
  const std::string& proj_string() const;
  void set_proj_string(const std::string& value);
  void set_proj_string(std::string&& value);
  void set_proj_string(const char* value);
  void set_proj_string(const char* value, size_t size);
  std::string* mutable_proj_string();
  std::string* release_proj_string();
  void set_allocated_proj_string(std::string* proj_string);
  private:
  const std::string& _internal_proj_string() const;
  void _internal_set_proj_string(const std::string& value);
  std::string* _internal_mutable_proj_string();
  public:

  // string map_reference = 15;
  void clear_map_reference();
  const std::string& map_reference() const;
  void set_map_reference(const std::string& value);
  void set_map_reference(std::string&& value);
  void set_map_reference(const char* value);
  void set_map_reference(const char* value, size_t size);
  std::string* mutable_map_reference();
  std::string* release_map_reference();
  void set_allocated_map_reference(std::string* map_reference);
  private:
  const std::string& _internal_map_reference() const;
  void _internal_set_map_reference(const std::string& value);
  std::string* _internal_mutable_map_reference();
  public:

  // string model_reference = 16;
  void clear_model_reference();
  const std::string& model_reference() const;
  void set_model_reference(const std::string& value);
  void set_model_reference(std::string&& value);
  void set_model_reference(const char* value);
  void set_model_reference(const char* value, size_t size);
  std::string* mutable_model_reference();
  std::string* release_model_reference();
  void set_allocated_model_reference(std::string* model_reference);
  private:
  const std::string& _internal_model_reference() const;
  void _internal_set_model_reference(const std::string& value);
  std::string* _internal_mutable_model_reference();
  public:

  // .osi3.InterfaceVersion version = 1;
  bool has_version() const;
  private:
  bool _internal_has_version() const;
  public:
  void clear_version();
  const ::osi3::InterfaceVersion& version() const;
  ::osi3::InterfaceVersion* release_version();
  ::osi3::InterfaceVersion* mutable_version();
  void set_allocated_version(::osi3::InterfaceVersion* version);
  private:
  const ::osi3::InterfaceVersion& _internal_version() const;
  ::osi3::InterfaceVersion* _internal_mutable_version();
  public:
  void unsafe_arena_set_allocated_version(
      ::osi3::InterfaceVersion* version);
  ::osi3::InterfaceVersion* unsafe_arena_release_version();

  // .osi3.Timestamp timestamp = 2;
  bool has_timestamp() const;
  private:
  bool _internal_has_timestamp() const;
  public:
  void clear_timestamp();
  const ::osi3::Timestamp& timestamp() const;
  ::osi3::Timestamp* release_timestamp();
  ::osi3::Timestamp* mutable_timestamp();
  void set_allocated_timestamp(::osi3::Timestamp* timestamp);
  private:
  const ::osi3::Timestamp& _internal_timestamp() const;
  ::osi3::Timestamp* _internal_mutable_timestamp();
  public:
  void unsafe_arena_set_allocated_timestamp(
      ::osi3::Timestamp* timestamp);
  ::osi3::Timestamp* unsafe_arena_release_timestamp();

  // .osi3.Identifier host_vehicle_id = 3;
  bool has_host_vehicle_id() const;
  private:
  bool _internal_has_host_vehicle_id() const;
  public:
  void clear_host_vehicle_id();
  const ::osi3::Identifier& host_vehicle_id() const;
  ::osi3::Identifier* release_host_vehicle_id();
  ::osi3::Identifier* mutable_host_vehicle_id();
  void set_allocated_host_vehicle_id(::osi3::Identifier* host_vehicle_id);
  private:
  const ::osi3::Identifier& _internal_host_vehicle_id() const;
  ::osi3::Identifier* _internal_mutable_host_vehicle_id();
  public:
  void unsafe_arena_set_allocated_host_vehicle_id(
      ::osi3::Identifier* host_vehicle_id);
  ::osi3::Identifier* unsafe_arena_release_host_vehicle_id();

  // .osi3.EnvironmentalConditions environmental_conditions = 12;
  bool has_environmental_conditions() const;
  private:
  bool _internal_has_environmental_conditions() const;
  public:
  void clear_environmental_conditions();
  const ::osi3::EnvironmentalConditions& environmental_conditions() const;
  ::osi3::EnvironmentalConditions* release_environmental_conditions();
  ::osi3::EnvironmentalConditions* mutable_environmental_conditions();
  void set_allocated_environmental_conditions(::osi3::EnvironmentalConditions* environmental_conditions);
  private:
  const ::osi3::EnvironmentalConditions& _internal_environmental_conditions() const;
  ::osi3::EnvironmentalConditions* _internal_mutable_environmental_conditions();
  public:
  void unsafe_arena_set_allocated_environmental_conditions(
      ::osi3::EnvironmentalConditions* environmental_conditions);
  ::osi3::EnvironmentalConditions* unsafe_arena_release_environmental_conditions();

  // uint32 country_code = 13;
  void clear_country_code();
  ::PROTOBUF_NAMESPACE_ID::uint32 country_code() const;
  void set_country_code(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_country_code() const;
  void _internal_set_country_code(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // @@protoc_insertion_point(class_scope:osi3.GroundTruth)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StationaryObject > stationary_object_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject > moving_object_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficSign > traffic_sign_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficLight > traffic_light_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::RoadMarking > road_marking_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::LaneBoundary > lane_boundary_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Lane > lane_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Occupant > occupant_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr proj_string_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr map_reference_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr model_reference_;
  ::osi3::InterfaceVersion* version_;
  ::osi3::Timestamp* timestamp_;
  ::osi3::Identifier* host_vehicle_id_;
  ::osi3::EnvironmentalConditions* environmental_conditions_;
  ::PROTOBUF_NAMESPACE_ID::uint32 country_code_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fgroundtruth_2eproto;
};
// ===================================================================


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

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

// .osi3.InterfaceVersion version = 1;
inline bool GroundTruth::_internal_has_version() const {
  return this != internal_default_instance() && version_ != nullptr;
}
inline bool GroundTruth::has_version() const {
  return _internal_has_version();
}
inline const ::osi3::InterfaceVersion& GroundTruth::_internal_version() const {
  const ::osi3::InterfaceVersion* p = version_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::InterfaceVersion&>(
      ::osi3::_InterfaceVersion_default_instance_);
}
inline const ::osi3::InterfaceVersion& GroundTruth::version() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.version)
  return _internal_version();
}
inline void GroundTruth::unsafe_arena_set_allocated_version(
    ::osi3::InterfaceVersion* version) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(version_);
  }
  version_ = version;
  if (version) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.GroundTruth.version)
}
inline ::osi3::InterfaceVersion* GroundTruth::release_version() {
  
  ::osi3::InterfaceVersion* temp = version_;
  version_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::InterfaceVersion* GroundTruth::unsafe_arena_release_version() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.version)
  
  ::osi3::InterfaceVersion* temp = version_;
  version_ = nullptr;
  return temp;
}
inline ::osi3::InterfaceVersion* GroundTruth::_internal_mutable_version() {
  
  if (version_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::InterfaceVersion>(GetArena());
    version_ = p;
  }
  return version_;
}
inline ::osi3::InterfaceVersion* GroundTruth::mutable_version() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.version)
  return _internal_mutable_version();
}
inline void GroundTruth::set_allocated_version(::osi3::InterfaceVersion* version) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(version_);
  }
  if (version) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(version)->GetArena();
    if (message_arena != submessage_arena) {
      version = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, version, submessage_arena);
    }
    
  } else {
    
  }
  version_ = version;
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.version)
}

// .osi3.Timestamp timestamp = 2;
inline bool GroundTruth::_internal_has_timestamp() const {
  return this != internal_default_instance() && timestamp_ != nullptr;
}
inline bool GroundTruth::has_timestamp() const {
  return _internal_has_timestamp();
}
inline const ::osi3::Timestamp& GroundTruth::_internal_timestamp() const {
  const ::osi3::Timestamp* p = timestamp_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Timestamp&>(
      ::osi3::_Timestamp_default_instance_);
}
inline const ::osi3::Timestamp& GroundTruth::timestamp() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.timestamp)
  return _internal_timestamp();
}
inline void GroundTruth::unsafe_arena_set_allocated_timestamp(
    ::osi3::Timestamp* timestamp) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp_);
  }
  timestamp_ = timestamp;
  if (timestamp) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.GroundTruth.timestamp)
}
inline ::osi3::Timestamp* GroundTruth::release_timestamp() {
  
  ::osi3::Timestamp* temp = timestamp_;
  timestamp_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Timestamp* GroundTruth::unsafe_arena_release_timestamp() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.timestamp)
  
  ::osi3::Timestamp* temp = timestamp_;
  timestamp_ = nullptr;
  return temp;
}
inline ::osi3::Timestamp* GroundTruth::_internal_mutable_timestamp() {
  
  if (timestamp_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Timestamp>(GetArena());
    timestamp_ = p;
  }
  return timestamp_;
}
inline ::osi3::Timestamp* GroundTruth::mutable_timestamp() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.timestamp)
  return _internal_mutable_timestamp();
}
inline void GroundTruth::set_allocated_timestamp(::osi3::Timestamp* timestamp) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp_);
  }
  if (timestamp) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(timestamp)->GetArena();
    if (message_arena != submessage_arena) {
      timestamp = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, timestamp, submessage_arena);
    }
    
  } else {
    
  }
  timestamp_ = timestamp;
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.timestamp)
}

// .osi3.Identifier host_vehicle_id = 3;
inline bool GroundTruth::_internal_has_host_vehicle_id() const {
  return this != internal_default_instance() && host_vehicle_id_ != nullptr;
}
inline bool GroundTruth::has_host_vehicle_id() const {
  return _internal_has_host_vehicle_id();
}
inline const ::osi3::Identifier& GroundTruth::_internal_host_vehicle_id() const {
  const ::osi3::Identifier* p = host_vehicle_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& GroundTruth::host_vehicle_id() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.host_vehicle_id)
  return _internal_host_vehicle_id();
}
inline void GroundTruth::unsafe_arena_set_allocated_host_vehicle_id(
    ::osi3::Identifier* host_vehicle_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(host_vehicle_id_);
  }
  host_vehicle_id_ = host_vehicle_id;
  if (host_vehicle_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.GroundTruth.host_vehicle_id)
}
inline ::osi3::Identifier* GroundTruth::release_host_vehicle_id() {
  
  ::osi3::Identifier* temp = host_vehicle_id_;
  host_vehicle_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* GroundTruth::unsafe_arena_release_host_vehicle_id() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.host_vehicle_id)
  
  ::osi3::Identifier* temp = host_vehicle_id_;
  host_vehicle_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* GroundTruth::_internal_mutable_host_vehicle_id() {
  
  if (host_vehicle_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    host_vehicle_id_ = p;
  }
  return host_vehicle_id_;
}
inline ::osi3::Identifier* GroundTruth::mutable_host_vehicle_id() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.host_vehicle_id)
  return _internal_mutable_host_vehicle_id();
}
inline void GroundTruth::set_allocated_host_vehicle_id(::osi3::Identifier* host_vehicle_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(host_vehicle_id_);
  }
  if (host_vehicle_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(host_vehicle_id)->GetArena();
    if (message_arena != submessage_arena) {
      host_vehicle_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, host_vehicle_id, submessage_arena);
    }
    
  } else {
    
  }
  host_vehicle_id_ = host_vehicle_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.host_vehicle_id)
}

// repeated .osi3.StationaryObject stationary_object = 4;
inline int GroundTruth::_internal_stationary_object_size() const {
  return stationary_object_.size();
}
inline int GroundTruth::stationary_object_size() const {
  return _internal_stationary_object_size();
}
inline ::osi3::StationaryObject* GroundTruth::mutable_stationary_object(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.stationary_object)
  return stationary_object_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StationaryObject >*
GroundTruth::mutable_stationary_object() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.stationary_object)
  return &stationary_object_;
}
inline const ::osi3::StationaryObject& GroundTruth::_internal_stationary_object(int index) const {
  return stationary_object_.Get(index);
}
inline const ::osi3::StationaryObject& GroundTruth::stationary_object(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.stationary_object)
  return _internal_stationary_object(index);
}
inline ::osi3::StationaryObject* GroundTruth::_internal_add_stationary_object() {
  return stationary_object_.Add();
}
inline ::osi3::StationaryObject* GroundTruth::add_stationary_object() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.stationary_object)
  return _internal_add_stationary_object();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StationaryObject >&
GroundTruth::stationary_object() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.stationary_object)
  return stationary_object_;
}

// repeated .osi3.MovingObject moving_object = 5;
inline int GroundTruth::_internal_moving_object_size() const {
  return moving_object_.size();
}
inline int GroundTruth::moving_object_size() const {
  return _internal_moving_object_size();
}
inline ::osi3::MovingObject* GroundTruth::mutable_moving_object(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.moving_object)
  return moving_object_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject >*
GroundTruth::mutable_moving_object() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.moving_object)
  return &moving_object_;
}
inline const ::osi3::MovingObject& GroundTruth::_internal_moving_object(int index) const {
  return moving_object_.Get(index);
}
inline const ::osi3::MovingObject& GroundTruth::moving_object(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.moving_object)
  return _internal_moving_object(index);
}
inline ::osi3::MovingObject* GroundTruth::_internal_add_moving_object() {
  return moving_object_.Add();
}
inline ::osi3::MovingObject* GroundTruth::add_moving_object() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.moving_object)
  return _internal_add_moving_object();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject >&
GroundTruth::moving_object() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.moving_object)
  return moving_object_;
}

// repeated .osi3.TrafficSign traffic_sign = 6;
inline int GroundTruth::_internal_traffic_sign_size() const {
  return traffic_sign_.size();
}
inline int GroundTruth::traffic_sign_size() const {
  return _internal_traffic_sign_size();
}
inline ::osi3::TrafficSign* GroundTruth::mutable_traffic_sign(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.traffic_sign)
  return traffic_sign_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficSign >*
GroundTruth::mutable_traffic_sign() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.traffic_sign)
  return &traffic_sign_;
}
inline const ::osi3::TrafficSign& GroundTruth::_internal_traffic_sign(int index) const {
  return traffic_sign_.Get(index);
}
inline const ::osi3::TrafficSign& GroundTruth::traffic_sign(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.traffic_sign)
  return _internal_traffic_sign(index);
}
inline ::osi3::TrafficSign* GroundTruth::_internal_add_traffic_sign() {
  return traffic_sign_.Add();
}
inline ::osi3::TrafficSign* GroundTruth::add_traffic_sign() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.traffic_sign)
  return _internal_add_traffic_sign();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficSign >&
GroundTruth::traffic_sign() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.traffic_sign)
  return traffic_sign_;
}

// repeated .osi3.TrafficLight traffic_light = 7;
inline int GroundTruth::_internal_traffic_light_size() const {
  return traffic_light_.size();
}
inline int GroundTruth::traffic_light_size() const {
  return _internal_traffic_light_size();
}
inline ::osi3::TrafficLight* GroundTruth::mutable_traffic_light(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.traffic_light)
  return traffic_light_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficLight >*
GroundTruth::mutable_traffic_light() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.traffic_light)
  return &traffic_light_;
}
inline const ::osi3::TrafficLight& GroundTruth::_internal_traffic_light(int index) const {
  return traffic_light_.Get(index);
}
inline const ::osi3::TrafficLight& GroundTruth::traffic_light(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.traffic_light)
  return _internal_traffic_light(index);
}
inline ::osi3::TrafficLight* GroundTruth::_internal_add_traffic_light() {
  return traffic_light_.Add();
}
inline ::osi3::TrafficLight* GroundTruth::add_traffic_light() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.traffic_light)
  return _internal_add_traffic_light();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficLight >&
GroundTruth::traffic_light() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.traffic_light)
  return traffic_light_;
}

// repeated .osi3.RoadMarking road_marking = 8;
inline int GroundTruth::_internal_road_marking_size() const {
  return road_marking_.size();
}
inline int GroundTruth::road_marking_size() const {
  return _internal_road_marking_size();
}
inline ::osi3::RoadMarking* GroundTruth::mutable_road_marking(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.road_marking)
  return road_marking_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::RoadMarking >*
GroundTruth::mutable_road_marking() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.road_marking)
  return &road_marking_;
}
inline const ::osi3::RoadMarking& GroundTruth::_internal_road_marking(int index) const {
  return road_marking_.Get(index);
}
inline const ::osi3::RoadMarking& GroundTruth::road_marking(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.road_marking)
  return _internal_road_marking(index);
}
inline ::osi3::RoadMarking* GroundTruth::_internal_add_road_marking() {
  return road_marking_.Add();
}
inline ::osi3::RoadMarking* GroundTruth::add_road_marking() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.road_marking)
  return _internal_add_road_marking();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::RoadMarking >&
GroundTruth::road_marking() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.road_marking)
  return road_marking_;
}

// repeated .osi3.LaneBoundary lane_boundary = 9;
inline int GroundTruth::_internal_lane_boundary_size() const {
  return lane_boundary_.size();
}
inline int GroundTruth::lane_boundary_size() const {
  return _internal_lane_boundary_size();
}
inline ::osi3::LaneBoundary* GroundTruth::mutable_lane_boundary(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.lane_boundary)
  return lane_boundary_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::LaneBoundary >*
GroundTruth::mutable_lane_boundary() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.lane_boundary)
  return &lane_boundary_;
}
inline const ::osi3::LaneBoundary& GroundTruth::_internal_lane_boundary(int index) const {
  return lane_boundary_.Get(index);
}
inline const ::osi3::LaneBoundary& GroundTruth::lane_boundary(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.lane_boundary)
  return _internal_lane_boundary(index);
}
inline ::osi3::LaneBoundary* GroundTruth::_internal_add_lane_boundary() {
  return lane_boundary_.Add();
}
inline ::osi3::LaneBoundary* GroundTruth::add_lane_boundary() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.lane_boundary)
  return _internal_add_lane_boundary();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::LaneBoundary >&
GroundTruth::lane_boundary() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.lane_boundary)
  return lane_boundary_;
}

// repeated .osi3.Lane lane = 10;
inline int GroundTruth::_internal_lane_size() const {
  return lane_.size();
}
inline int GroundTruth::lane_size() const {
  return _internal_lane_size();
}
inline ::osi3::Lane* GroundTruth::mutable_lane(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.lane)
  return lane_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Lane >*
GroundTruth::mutable_lane() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.lane)
  return &lane_;
}
inline const ::osi3::Lane& GroundTruth::_internal_lane(int index) const {
  return lane_.Get(index);
}
inline const ::osi3::Lane& GroundTruth::lane(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.lane)
  return _internal_lane(index);
}
inline ::osi3::Lane* GroundTruth::_internal_add_lane() {
  return lane_.Add();
}
inline ::osi3::Lane* GroundTruth::add_lane() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.lane)
  return _internal_add_lane();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Lane >&
GroundTruth::lane() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.lane)
  return lane_;
}

// repeated .osi3.Occupant occupant = 11;
inline int GroundTruth::_internal_occupant_size() const {
  return occupant_.size();
}
inline int GroundTruth::occupant_size() const {
  return _internal_occupant_size();
}
inline ::osi3::Occupant* GroundTruth::mutable_occupant(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.occupant)
  return occupant_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Occupant >*
GroundTruth::mutable_occupant() {
  // @@protoc_insertion_point(field_mutable_list:osi3.GroundTruth.occupant)
  return &occupant_;
}
inline const ::osi3::Occupant& GroundTruth::_internal_occupant(int index) const {
  return occupant_.Get(index);
}
inline const ::osi3::Occupant& GroundTruth::occupant(int index) const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.occupant)
  return _internal_occupant(index);
}
inline ::osi3::Occupant* GroundTruth::_internal_add_occupant() {
  return occupant_.Add();
}
inline ::osi3::Occupant* GroundTruth::add_occupant() {
  // @@protoc_insertion_point(field_add:osi3.GroundTruth.occupant)
  return _internal_add_occupant();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Occupant >&
GroundTruth::occupant() const {
  // @@protoc_insertion_point(field_list:osi3.GroundTruth.occupant)
  return occupant_;
}

// .osi3.EnvironmentalConditions environmental_conditions = 12;
inline bool GroundTruth::_internal_has_environmental_conditions() const {
  return this != internal_default_instance() && environmental_conditions_ != nullptr;
}
inline bool GroundTruth::has_environmental_conditions() const {
  return _internal_has_environmental_conditions();
}
inline const ::osi3::EnvironmentalConditions& GroundTruth::_internal_environmental_conditions() const {
  const ::osi3::EnvironmentalConditions* p = environmental_conditions_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::EnvironmentalConditions&>(
      ::osi3::_EnvironmentalConditions_default_instance_);
}
inline const ::osi3::EnvironmentalConditions& GroundTruth::environmental_conditions() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.environmental_conditions)
  return _internal_environmental_conditions();
}
inline void GroundTruth::unsafe_arena_set_allocated_environmental_conditions(
    ::osi3::EnvironmentalConditions* environmental_conditions) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(environmental_conditions_);
  }
  environmental_conditions_ = environmental_conditions;
  if (environmental_conditions) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.GroundTruth.environmental_conditions)
}
inline ::osi3::EnvironmentalConditions* GroundTruth::release_environmental_conditions() {
  
  ::osi3::EnvironmentalConditions* temp = environmental_conditions_;
  environmental_conditions_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::EnvironmentalConditions* GroundTruth::unsafe_arena_release_environmental_conditions() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.environmental_conditions)
  
  ::osi3::EnvironmentalConditions* temp = environmental_conditions_;
  environmental_conditions_ = nullptr;
  return temp;
}
inline ::osi3::EnvironmentalConditions* GroundTruth::_internal_mutable_environmental_conditions() {
  
  if (environmental_conditions_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::EnvironmentalConditions>(GetArena());
    environmental_conditions_ = p;
  }
  return environmental_conditions_;
}
inline ::osi3::EnvironmentalConditions* GroundTruth::mutable_environmental_conditions() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.environmental_conditions)
  return _internal_mutable_environmental_conditions();
}
inline void GroundTruth::set_allocated_environmental_conditions(::osi3::EnvironmentalConditions* environmental_conditions) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(environmental_conditions_);
  }
  if (environmental_conditions) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(environmental_conditions)->GetArena();
    if (message_arena != submessage_arena) {
      environmental_conditions = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, environmental_conditions, submessage_arena);
    }
    
  } else {
    
  }
  environmental_conditions_ = environmental_conditions;
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.environmental_conditions)
}

// uint32 country_code = 13;
inline void GroundTruth::clear_country_code() {
  country_code_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 GroundTruth::_internal_country_code() const {
  return country_code_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 GroundTruth::country_code() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.country_code)
  return _internal_country_code();
}
inline void GroundTruth::_internal_set_country_code(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  country_code_ = value;
}
inline void GroundTruth::set_country_code(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_country_code(value);
  // @@protoc_insertion_point(field_set:osi3.GroundTruth.country_code)
}

// string proj_string = 14;
inline void GroundTruth::clear_proj_string() {
  proj_string_.ClearToEmpty();
}
inline const std::string& GroundTruth::proj_string() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.proj_string)
  return _internal_proj_string();
}
inline void GroundTruth::set_proj_string(const std::string& value) {
  _internal_set_proj_string(value);
  // @@protoc_insertion_point(field_set:osi3.GroundTruth.proj_string)
}
inline std::string* GroundTruth::mutable_proj_string() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.proj_string)
  return _internal_mutable_proj_string();
}
inline const std::string& GroundTruth::_internal_proj_string() const {
  return proj_string_.Get();
}
inline void GroundTruth::_internal_set_proj_string(const std::string& value) {
  
  proj_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void GroundTruth::set_proj_string(std::string&& value) {
  
  proj_string_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:osi3.GroundTruth.proj_string)
}
inline void GroundTruth::set_proj_string(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  proj_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:osi3.GroundTruth.proj_string)
}
inline void GroundTruth::set_proj_string(const char* value,
    size_t size) {
  
  proj_string_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:osi3.GroundTruth.proj_string)
}
inline std::string* GroundTruth::_internal_mutable_proj_string() {
  
  return proj_string_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* GroundTruth::release_proj_string() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.proj_string)
  return proj_string_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void GroundTruth::set_allocated_proj_string(std::string* proj_string) {
  if (proj_string != nullptr) {
    
  } else {
    
  }
  proj_string_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), proj_string,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.proj_string)
}

// string map_reference = 15;
inline void GroundTruth::clear_map_reference() {
  map_reference_.ClearToEmpty();
}
inline const std::string& GroundTruth::map_reference() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.map_reference)
  return _internal_map_reference();
}
inline void GroundTruth::set_map_reference(const std::string& value) {
  _internal_set_map_reference(value);
  // @@protoc_insertion_point(field_set:osi3.GroundTruth.map_reference)
}
inline std::string* GroundTruth::mutable_map_reference() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.map_reference)
  return _internal_mutable_map_reference();
}
inline const std::string& GroundTruth::_internal_map_reference() const {
  return map_reference_.Get();
}
inline void GroundTruth::_internal_set_map_reference(const std::string& value) {
  
  map_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void GroundTruth::set_map_reference(std::string&& value) {
  
  map_reference_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:osi3.GroundTruth.map_reference)
}
inline void GroundTruth::set_map_reference(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  map_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:osi3.GroundTruth.map_reference)
}
inline void GroundTruth::set_map_reference(const char* value,
    size_t size) {
  
  map_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:osi3.GroundTruth.map_reference)
}
inline std::string* GroundTruth::_internal_mutable_map_reference() {
  
  return map_reference_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* GroundTruth::release_map_reference() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.map_reference)
  return map_reference_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void GroundTruth::set_allocated_map_reference(std::string* map_reference) {
  if (map_reference != nullptr) {
    
  } else {
    
  }
  map_reference_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), map_reference,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.map_reference)
}

// string model_reference = 16;
inline void GroundTruth::clear_model_reference() {
  model_reference_.ClearToEmpty();
}
inline const std::string& GroundTruth::model_reference() const {
  // @@protoc_insertion_point(field_get:osi3.GroundTruth.model_reference)
  return _internal_model_reference();
}
inline void GroundTruth::set_model_reference(const std::string& value) {
  _internal_set_model_reference(value);
  // @@protoc_insertion_point(field_set:osi3.GroundTruth.model_reference)
}
inline std::string* GroundTruth::mutable_model_reference() {
  // @@protoc_insertion_point(field_mutable:osi3.GroundTruth.model_reference)
  return _internal_mutable_model_reference();
}
inline const std::string& GroundTruth::_internal_model_reference() const {
  return model_reference_.Get();
}
inline void GroundTruth::_internal_set_model_reference(const std::string& value) {
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void GroundTruth::set_model_reference(std::string&& value) {
  
  model_reference_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:osi3.GroundTruth.model_reference)
}
inline void GroundTruth::set_model_reference(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:osi3.GroundTruth.model_reference)
}
inline void GroundTruth::set_model_reference(const char* value,
    size_t size) {
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:osi3.GroundTruth.model_reference)
}
inline std::string* GroundTruth::_internal_mutable_model_reference() {
  
  return model_reference_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* GroundTruth::release_model_reference() {
  // @@protoc_insertion_point(field_release:osi3.GroundTruth.model_reference)
  return model_reference_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void GroundTruth::set_allocated_model_reference(std::string* model_reference) {
  if (model_reference != nullptr) {
    
  } else {
    
  }
  model_reference_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), model_reference,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:osi3.GroundTruth.model_reference)
}

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

// @@protoc_insertion_point(namespace_scope)

}  // namespace osi3

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_osi_5fgroundtruth_2eproto
