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

#ifndef GOOGLE_PROTOBUF_INCLUDED_osi_5fobject_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_osi_5fobject_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/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
#include "osi_common.pb.h"
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_osi_5fobject_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_osi_5fobject_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[8]
    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_5fobject_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_osi_5fobject_2eproto_metadata_getter(int index);
namespace osi3 {
class MovingObject;
struct MovingObjectDefaultTypeInternal;
extern MovingObjectDefaultTypeInternal _MovingObject_default_instance_;
class MovingObject_MovingObjectClassification;
struct MovingObject_MovingObjectClassificationDefaultTypeInternal;
extern MovingObject_MovingObjectClassificationDefaultTypeInternal _MovingObject_MovingObjectClassification_default_instance_;
class MovingObject_VehicleAttributes;
struct MovingObject_VehicleAttributesDefaultTypeInternal;
extern MovingObject_VehicleAttributesDefaultTypeInternal _MovingObject_VehicleAttributes_default_instance_;
class MovingObject_VehicleAttributes_WheelData;
struct MovingObject_VehicleAttributes_WheelDataDefaultTypeInternal;
extern MovingObject_VehicleAttributes_WheelDataDefaultTypeInternal _MovingObject_VehicleAttributes_WheelData_default_instance_;
class MovingObject_VehicleClassification;
struct MovingObject_VehicleClassificationDefaultTypeInternal;
extern MovingObject_VehicleClassificationDefaultTypeInternal _MovingObject_VehicleClassification_default_instance_;
class MovingObject_VehicleClassification_LightState;
struct MovingObject_VehicleClassification_LightStateDefaultTypeInternal;
extern MovingObject_VehicleClassification_LightStateDefaultTypeInternal _MovingObject_VehicleClassification_LightState_default_instance_;
class StationaryObject;
struct StationaryObjectDefaultTypeInternal;
extern StationaryObjectDefaultTypeInternal _StationaryObject_default_instance_;
class StationaryObject_Classification;
struct StationaryObject_ClassificationDefaultTypeInternal;
extern StationaryObject_ClassificationDefaultTypeInternal _StationaryObject_Classification_default_instance_;
}  // namespace osi3
PROTOBUF_NAMESPACE_OPEN
template<> ::osi3::MovingObject* Arena::CreateMaybeMessage<::osi3::MovingObject>(Arena*);
template<> ::osi3::MovingObject_MovingObjectClassification* Arena::CreateMaybeMessage<::osi3::MovingObject_MovingObjectClassification>(Arena*);
template<> ::osi3::MovingObject_VehicleAttributes* Arena::CreateMaybeMessage<::osi3::MovingObject_VehicleAttributes>(Arena*);
template<> ::osi3::MovingObject_VehicleAttributes_WheelData* Arena::CreateMaybeMessage<::osi3::MovingObject_VehicleAttributes_WheelData>(Arena*);
template<> ::osi3::MovingObject_VehicleClassification* Arena::CreateMaybeMessage<::osi3::MovingObject_VehicleClassification>(Arena*);
template<> ::osi3::MovingObject_VehicleClassification_LightState* Arena::CreateMaybeMessage<::osi3::MovingObject_VehicleClassification_LightState>(Arena*);
template<> ::osi3::StationaryObject* Arena::CreateMaybeMessage<::osi3::StationaryObject>(Arena*);
template<> ::osi3::StationaryObject_Classification* Arena::CreateMaybeMessage<::osi3::StationaryObject_Classification>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace osi3 {

enum StationaryObject_Classification_Type : int {
  StationaryObject_Classification_Type_TYPE_UNKNOWN = 0,
  StationaryObject_Classification_Type_TYPE_OTHER = 1,
  StationaryObject_Classification_Type_TYPE_BRIDGE = 2,
  StationaryObject_Classification_Type_TYPE_BUILDING = 3,
  StationaryObject_Classification_Type_TYPE_POLE = 4,
  StationaryObject_Classification_Type_TYPE_PYLON = 5,
  StationaryObject_Classification_Type_TYPE_DELINEATOR = 6,
  StationaryObject_Classification_Type_TYPE_TREE = 7,
  StationaryObject_Classification_Type_TYPE_BARRIER = 8,
  StationaryObject_Classification_Type_TYPE_VEGETATION = 9,
  StationaryObject_Classification_Type_TYPE_CURBSTONE = 10,
  StationaryObject_Classification_Type_TYPE_WALL = 11,
  StationaryObject_Classification_Type_TYPE_VERTICAL_STRUCTURE = 12,
  StationaryObject_Classification_Type_TYPE_RECTANGULAR_STRUCTURE = 13,
  StationaryObject_Classification_Type_TYPE_OVERHEAD_STRUCTURE = 14,
  StationaryObject_Classification_Type_TYPE_REFLECTIVE_STRUCTURE = 15,
  StationaryObject_Classification_Type_TYPE_CONSTRUCTION_SITE_ELEMENT = 16,
  StationaryObject_Classification_Type_StationaryObject_Classification_Type_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StationaryObject_Classification_Type_StationaryObject_Classification_Type_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StationaryObject_Classification_Type_IsValid(int value);
constexpr StationaryObject_Classification_Type StationaryObject_Classification_Type_Type_MIN = StationaryObject_Classification_Type_TYPE_UNKNOWN;
constexpr StationaryObject_Classification_Type StationaryObject_Classification_Type_Type_MAX = StationaryObject_Classification_Type_TYPE_CONSTRUCTION_SITE_ELEMENT;
constexpr int StationaryObject_Classification_Type_Type_ARRAYSIZE = StationaryObject_Classification_Type_Type_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StationaryObject_Classification_Type_descriptor();
template<typename T>
inline const std::string& StationaryObject_Classification_Type_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StationaryObject_Classification_Type>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StationaryObject_Classification_Type_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StationaryObject_Classification_Type_descriptor(), enum_t_value);
}
inline bool StationaryObject_Classification_Type_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, StationaryObject_Classification_Type* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StationaryObject_Classification_Type>(
    StationaryObject_Classification_Type_descriptor(), name, value);
}
enum StationaryObject_Classification_Material : int {
  StationaryObject_Classification_Material_MATERIAL_UNKNOWN = 0,
  StationaryObject_Classification_Material_MATERIAL_OTHER = 1,
  StationaryObject_Classification_Material_MATERIAL_WOOD = 2,
  StationaryObject_Classification_Material_MATERIAL_PLASTIC = 3,
  StationaryObject_Classification_Material_MATERIAL_CONCRETE = 4,
  StationaryObject_Classification_Material_MATERIAL_METAL = 5,
  StationaryObject_Classification_Material_MATERIAL_STONE = 6,
  StationaryObject_Classification_Material_MATERIAL_GLAS = 7,
  StationaryObject_Classification_Material_MATERIAL_MUD = 8,
  StationaryObject_Classification_Material_StationaryObject_Classification_Material_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StationaryObject_Classification_Material_StationaryObject_Classification_Material_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StationaryObject_Classification_Material_IsValid(int value);
constexpr StationaryObject_Classification_Material StationaryObject_Classification_Material_Material_MIN = StationaryObject_Classification_Material_MATERIAL_UNKNOWN;
constexpr StationaryObject_Classification_Material StationaryObject_Classification_Material_Material_MAX = StationaryObject_Classification_Material_MATERIAL_MUD;
constexpr int StationaryObject_Classification_Material_Material_ARRAYSIZE = StationaryObject_Classification_Material_Material_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StationaryObject_Classification_Material_descriptor();
template<typename T>
inline const std::string& StationaryObject_Classification_Material_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StationaryObject_Classification_Material>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StationaryObject_Classification_Material_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StationaryObject_Classification_Material_descriptor(), enum_t_value);
}
inline bool StationaryObject_Classification_Material_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, StationaryObject_Classification_Material* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StationaryObject_Classification_Material>(
    StationaryObject_Classification_Material_descriptor(), name, value);
}
enum StationaryObject_Classification_Density : int {
  StationaryObject_Classification_Density_DENSITY_UNKNOWN = 0,
  StationaryObject_Classification_Density_DENSITY_OTHER = 1,
  StationaryObject_Classification_Density_DENSITY_SOLID = 2,
  StationaryObject_Classification_Density_DENSITY_SMALL_MESH = 3,
  StationaryObject_Classification_Density_DENSITY_MEDIAN_MESH = 4,
  StationaryObject_Classification_Density_DENSITY_LARGE_MESH = 5,
  StationaryObject_Classification_Density_DENSITY_OPEN = 6,
  StationaryObject_Classification_Density_StationaryObject_Classification_Density_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StationaryObject_Classification_Density_StationaryObject_Classification_Density_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StationaryObject_Classification_Density_IsValid(int value);
constexpr StationaryObject_Classification_Density StationaryObject_Classification_Density_Density_MIN = StationaryObject_Classification_Density_DENSITY_UNKNOWN;
constexpr StationaryObject_Classification_Density StationaryObject_Classification_Density_Density_MAX = StationaryObject_Classification_Density_DENSITY_OPEN;
constexpr int StationaryObject_Classification_Density_Density_ARRAYSIZE = StationaryObject_Classification_Density_Density_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StationaryObject_Classification_Density_descriptor();
template<typename T>
inline const std::string& StationaryObject_Classification_Density_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StationaryObject_Classification_Density>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StationaryObject_Classification_Density_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StationaryObject_Classification_Density_descriptor(), enum_t_value);
}
inline bool StationaryObject_Classification_Density_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, StationaryObject_Classification_Density* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StationaryObject_Classification_Density>(
    StationaryObject_Classification_Density_descriptor(), name, value);
}
enum StationaryObject_Classification_Color : int {
  StationaryObject_Classification_Color_COLOR_UNKNOWN = 0,
  StationaryObject_Classification_Color_COLOR_OTHER = 1,
  StationaryObject_Classification_Color_COLOR_YELLOW = 2,
  StationaryObject_Classification_Color_COLOR_GREEN = 3,
  StationaryObject_Classification_Color_COLOR_BLUE = 4,
  StationaryObject_Classification_Color_COLOR_VIOLET = 5,
  StationaryObject_Classification_Color_COLOR_RED = 6,
  StationaryObject_Classification_Color_COLOR_ORANGE = 7,
  StationaryObject_Classification_Color_COLOR_BLACK = 8,
  StationaryObject_Classification_Color_COLOR_GREY = 9,
  StationaryObject_Classification_Color_COLOR_WHITE = 10,
  StationaryObject_Classification_Color_StationaryObject_Classification_Color_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  StationaryObject_Classification_Color_StationaryObject_Classification_Color_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool StationaryObject_Classification_Color_IsValid(int value);
constexpr StationaryObject_Classification_Color StationaryObject_Classification_Color_Color_MIN = StationaryObject_Classification_Color_COLOR_UNKNOWN;
constexpr StationaryObject_Classification_Color StationaryObject_Classification_Color_Color_MAX = StationaryObject_Classification_Color_COLOR_WHITE;
constexpr int StationaryObject_Classification_Color_Color_ARRAYSIZE = StationaryObject_Classification_Color_Color_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* StationaryObject_Classification_Color_descriptor();
template<typename T>
inline const std::string& StationaryObject_Classification_Color_Name(T enum_t_value) {
  static_assert(::std::is_same<T, StationaryObject_Classification_Color>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function StationaryObject_Classification_Color_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    StationaryObject_Classification_Color_descriptor(), enum_t_value);
}
inline bool StationaryObject_Classification_Color_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, StationaryObject_Classification_Color* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<StationaryObject_Classification_Color>(
    StationaryObject_Classification_Color_descriptor(), name, value);
}
enum MovingObject_VehicleClassification_LightState_IndicatorState : int {
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_UNKNOWN = 0,
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_OTHER = 1,
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_OFF = 2,
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_LEFT = 3,
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_RIGHT = 4,
  MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_WARNING = 5,
  MovingObject_VehicleClassification_LightState_IndicatorState_MovingObject_VehicleClassification_LightState_IndicatorState_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  MovingObject_VehicleClassification_LightState_IndicatorState_MovingObject_VehicleClassification_LightState_IndicatorState_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool MovingObject_VehicleClassification_LightState_IndicatorState_IsValid(int value);
constexpr MovingObject_VehicleClassification_LightState_IndicatorState MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_MIN = MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_UNKNOWN;
constexpr MovingObject_VehicleClassification_LightState_IndicatorState MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_MAX = MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_WARNING;
constexpr int MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_ARRAYSIZE = MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MovingObject_VehicleClassification_LightState_IndicatorState_descriptor();
template<typename T>
inline const std::string& MovingObject_VehicleClassification_LightState_IndicatorState_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MovingObject_VehicleClassification_LightState_IndicatorState>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MovingObject_VehicleClassification_LightState_IndicatorState_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    MovingObject_VehicleClassification_LightState_IndicatorState_descriptor(), enum_t_value);
}
inline bool MovingObject_VehicleClassification_LightState_IndicatorState_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MovingObject_VehicleClassification_LightState_IndicatorState* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MovingObject_VehicleClassification_LightState_IndicatorState>(
    MovingObject_VehicleClassification_LightState_IndicatorState_descriptor(), name, value);
}
enum MovingObject_VehicleClassification_LightState_GenericLightState : int {
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_UNKNOWN = 0,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_OTHER = 1,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_OFF = 2,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_ON = 3,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_BLUE = 4,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_BLUE_AND_RED = 5,
  MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_AMBER = 6,
  MovingObject_VehicleClassification_LightState_GenericLightState_MovingObject_VehicleClassification_LightState_GenericLightState_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  MovingObject_VehicleClassification_LightState_GenericLightState_MovingObject_VehicleClassification_LightState_GenericLightState_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool MovingObject_VehicleClassification_LightState_GenericLightState_IsValid(int value);
constexpr MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_MIN = MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_UNKNOWN;
constexpr MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_MAX = MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_AMBER;
constexpr int MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_ARRAYSIZE = MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MovingObject_VehicleClassification_LightState_GenericLightState_descriptor();
template<typename T>
inline const std::string& MovingObject_VehicleClassification_LightState_GenericLightState_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MovingObject_VehicleClassification_LightState_GenericLightState>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MovingObject_VehicleClassification_LightState_GenericLightState_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    MovingObject_VehicleClassification_LightState_GenericLightState_descriptor(), enum_t_value);
}
inline bool MovingObject_VehicleClassification_LightState_GenericLightState_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MovingObject_VehicleClassification_LightState_GenericLightState* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MovingObject_VehicleClassification_LightState_GenericLightState>(
    MovingObject_VehicleClassification_LightState_GenericLightState_descriptor(), name, value);
}
enum MovingObject_VehicleClassification_LightState_BrakeLightState : int {
  MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_UNKNOWN = 0,
  MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_OTHER = 1,
  MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_OFF = 2,
  MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_NORMAL = 3,
  MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_STRONG = 4,
  MovingObject_VehicleClassification_LightState_BrakeLightState_MovingObject_VehicleClassification_LightState_BrakeLightState_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  MovingObject_VehicleClassification_LightState_BrakeLightState_MovingObject_VehicleClassification_LightState_BrakeLightState_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool MovingObject_VehicleClassification_LightState_BrakeLightState_IsValid(int value);
constexpr MovingObject_VehicleClassification_LightState_BrakeLightState MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_MIN = MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_UNKNOWN;
constexpr MovingObject_VehicleClassification_LightState_BrakeLightState MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_MAX = MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_STRONG;
constexpr int MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_ARRAYSIZE = MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MovingObject_VehicleClassification_LightState_BrakeLightState_descriptor();
template<typename T>
inline const std::string& MovingObject_VehicleClassification_LightState_BrakeLightState_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MovingObject_VehicleClassification_LightState_BrakeLightState>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MovingObject_VehicleClassification_LightState_BrakeLightState_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    MovingObject_VehicleClassification_LightState_BrakeLightState_descriptor(), enum_t_value);
}
inline bool MovingObject_VehicleClassification_LightState_BrakeLightState_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MovingObject_VehicleClassification_LightState_BrakeLightState* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MovingObject_VehicleClassification_LightState_BrakeLightState>(
    MovingObject_VehicleClassification_LightState_BrakeLightState_descriptor(), name, value);
}
enum MovingObject_VehicleClassification_Type : int {
  MovingObject_VehicleClassification_Type_TYPE_UNKNOWN = 0,
  MovingObject_VehicleClassification_Type_TYPE_OTHER = 1,
  MovingObject_VehicleClassification_Type_TYPE_SMALL_CAR = 2,
  MovingObject_VehicleClassification_Type_TYPE_COMPACT_CAR = 3,
  MovingObject_VehicleClassification_Type_TYPE_MEDIUM_CAR = 4,
  MovingObject_VehicleClassification_Type_TYPE_LUXURY_CAR = 5,
  MovingObject_VehicleClassification_Type_TYPE_DELIVERY_VAN = 6,
  MovingObject_VehicleClassification_Type_TYPE_HEAVY_TRUCK = 7,
  MovingObject_VehicleClassification_Type_TYPE_SEMITRAILER = 8,
  MovingObject_VehicleClassification_Type_TYPE_TRAILER = 9,
  MovingObject_VehicleClassification_Type_TYPE_MOTORBIKE = 10,
  MovingObject_VehicleClassification_Type_TYPE_BICYCLE = 11,
  MovingObject_VehicleClassification_Type_TYPE_BUS = 12,
  MovingObject_VehicleClassification_Type_TYPE_TRAM = 13,
  MovingObject_VehicleClassification_Type_TYPE_TRAIN = 14,
  MovingObject_VehicleClassification_Type_TYPE_WHEELCHAIR = 15,
  MovingObject_VehicleClassification_Type_MovingObject_VehicleClassification_Type_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  MovingObject_VehicleClassification_Type_MovingObject_VehicleClassification_Type_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool MovingObject_VehicleClassification_Type_IsValid(int value);
constexpr MovingObject_VehicleClassification_Type MovingObject_VehicleClassification_Type_Type_MIN = MovingObject_VehicleClassification_Type_TYPE_UNKNOWN;
constexpr MovingObject_VehicleClassification_Type MovingObject_VehicleClassification_Type_Type_MAX = MovingObject_VehicleClassification_Type_TYPE_WHEELCHAIR;
constexpr int MovingObject_VehicleClassification_Type_Type_ARRAYSIZE = MovingObject_VehicleClassification_Type_Type_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MovingObject_VehicleClassification_Type_descriptor();
template<typename T>
inline const std::string& MovingObject_VehicleClassification_Type_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MovingObject_VehicleClassification_Type>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MovingObject_VehicleClassification_Type_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    MovingObject_VehicleClassification_Type_descriptor(), enum_t_value);
}
inline bool MovingObject_VehicleClassification_Type_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MovingObject_VehicleClassification_Type* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MovingObject_VehicleClassification_Type>(
    MovingObject_VehicleClassification_Type_descriptor(), name, value);
}
enum MovingObject_Type : int {
  MovingObject_Type_TYPE_UNKNOWN = 0,
  MovingObject_Type_TYPE_OTHER = 1,
  MovingObject_Type_TYPE_VEHICLE = 2,
  MovingObject_Type_TYPE_PEDESTRIAN = 3,
  MovingObject_Type_TYPE_ANIMAL = 4,
  MovingObject_Type_MovingObject_Type_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  MovingObject_Type_MovingObject_Type_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool MovingObject_Type_IsValid(int value);
constexpr MovingObject_Type MovingObject_Type_Type_MIN = MovingObject_Type_TYPE_UNKNOWN;
constexpr MovingObject_Type MovingObject_Type_Type_MAX = MovingObject_Type_TYPE_ANIMAL;
constexpr int MovingObject_Type_Type_ARRAYSIZE = MovingObject_Type_Type_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* MovingObject_Type_descriptor();
template<typename T>
inline const std::string& MovingObject_Type_Name(T enum_t_value) {
  static_assert(::std::is_same<T, MovingObject_Type>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function MovingObject_Type_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    MovingObject_Type_descriptor(), enum_t_value);
}
inline bool MovingObject_Type_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, MovingObject_Type* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<MovingObject_Type>(
    MovingObject_Type_descriptor(), name, value);
}
// ===================================================================

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

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

  inline StationaryObject_Classification& operator=(const StationaryObject_Classification& from) {
    CopyFrom(from);
    return *this;
  }
  inline StationaryObject_Classification& operator=(StationaryObject_Classification&& 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 StationaryObject_Classification& default_instance() {
    return *internal_default_instance();
  }
  static inline const StationaryObject_Classification* internal_default_instance() {
    return reinterpret_cast<const StationaryObject_Classification*>(
               &_StationaryObject_Classification_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

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

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

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

  StationaryObject_Classification* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<StationaryObject_Classification>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const StationaryObject_Classification& from);
  void MergeFrom(const StationaryObject_Classification& 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(StationaryObject_Classification* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.StationaryObject.Classification";
  }
  protected:
  explicit StationaryObject_Classification(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

  typedef StationaryObject_Classification_Type Type;
  static constexpr Type TYPE_UNKNOWN =
    StationaryObject_Classification_Type_TYPE_UNKNOWN;
  static constexpr Type TYPE_OTHER =
    StationaryObject_Classification_Type_TYPE_OTHER;
  static constexpr Type TYPE_BRIDGE =
    StationaryObject_Classification_Type_TYPE_BRIDGE;
  static constexpr Type TYPE_BUILDING =
    StationaryObject_Classification_Type_TYPE_BUILDING;
  static constexpr Type TYPE_POLE =
    StationaryObject_Classification_Type_TYPE_POLE;
  static constexpr Type TYPE_PYLON =
    StationaryObject_Classification_Type_TYPE_PYLON;
  static constexpr Type TYPE_DELINEATOR =
    StationaryObject_Classification_Type_TYPE_DELINEATOR;
  static constexpr Type TYPE_TREE =
    StationaryObject_Classification_Type_TYPE_TREE;
  static constexpr Type TYPE_BARRIER =
    StationaryObject_Classification_Type_TYPE_BARRIER;
  static constexpr Type TYPE_VEGETATION =
    StationaryObject_Classification_Type_TYPE_VEGETATION;
  static constexpr Type TYPE_CURBSTONE =
    StationaryObject_Classification_Type_TYPE_CURBSTONE;
  static constexpr Type TYPE_WALL =
    StationaryObject_Classification_Type_TYPE_WALL;
  static constexpr Type TYPE_VERTICAL_STRUCTURE =
    StationaryObject_Classification_Type_TYPE_VERTICAL_STRUCTURE;
  static constexpr Type TYPE_RECTANGULAR_STRUCTURE =
    StationaryObject_Classification_Type_TYPE_RECTANGULAR_STRUCTURE;
  static constexpr Type TYPE_OVERHEAD_STRUCTURE =
    StationaryObject_Classification_Type_TYPE_OVERHEAD_STRUCTURE;
  static constexpr Type TYPE_REFLECTIVE_STRUCTURE =
    StationaryObject_Classification_Type_TYPE_REFLECTIVE_STRUCTURE;
  static constexpr Type TYPE_CONSTRUCTION_SITE_ELEMENT =
    StationaryObject_Classification_Type_TYPE_CONSTRUCTION_SITE_ELEMENT;
  static inline bool Type_IsValid(int value) {
    return StationaryObject_Classification_Type_IsValid(value);
  }
  static constexpr Type Type_MIN =
    StationaryObject_Classification_Type_Type_MIN;
  static constexpr Type Type_MAX =
    StationaryObject_Classification_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE =
    StationaryObject_Classification_Type_Type_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Type_descriptor() {
    return StationaryObject_Classification_Type_descriptor();
  }
  template<typename T>
  static inline const std::string& Type_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Type>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Type_Name.");
    return StationaryObject_Classification_Type_Name(enum_t_value);
  }
  static inline bool Type_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Type* value) {
    return StationaryObject_Classification_Type_Parse(name, value);
  }

  typedef StationaryObject_Classification_Material Material;
  static constexpr Material MATERIAL_UNKNOWN =
    StationaryObject_Classification_Material_MATERIAL_UNKNOWN;
  static constexpr Material MATERIAL_OTHER =
    StationaryObject_Classification_Material_MATERIAL_OTHER;
  static constexpr Material MATERIAL_WOOD =
    StationaryObject_Classification_Material_MATERIAL_WOOD;
  static constexpr Material MATERIAL_PLASTIC =
    StationaryObject_Classification_Material_MATERIAL_PLASTIC;
  static constexpr Material MATERIAL_CONCRETE =
    StationaryObject_Classification_Material_MATERIAL_CONCRETE;
  static constexpr Material MATERIAL_METAL =
    StationaryObject_Classification_Material_MATERIAL_METAL;
  static constexpr Material MATERIAL_STONE =
    StationaryObject_Classification_Material_MATERIAL_STONE;
  static constexpr Material MATERIAL_GLAS =
    StationaryObject_Classification_Material_MATERIAL_GLAS;
  static constexpr Material MATERIAL_MUD =
    StationaryObject_Classification_Material_MATERIAL_MUD;
  static inline bool Material_IsValid(int value) {
    return StationaryObject_Classification_Material_IsValid(value);
  }
  static constexpr Material Material_MIN =
    StationaryObject_Classification_Material_Material_MIN;
  static constexpr Material Material_MAX =
    StationaryObject_Classification_Material_Material_MAX;
  static constexpr int Material_ARRAYSIZE =
    StationaryObject_Classification_Material_Material_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Material_descriptor() {
    return StationaryObject_Classification_Material_descriptor();
  }
  template<typename T>
  static inline const std::string& Material_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Material>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Material_Name.");
    return StationaryObject_Classification_Material_Name(enum_t_value);
  }
  static inline bool Material_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Material* value) {
    return StationaryObject_Classification_Material_Parse(name, value);
  }

  typedef StationaryObject_Classification_Density Density;
  static constexpr Density DENSITY_UNKNOWN =
    StationaryObject_Classification_Density_DENSITY_UNKNOWN;
  static constexpr Density DENSITY_OTHER =
    StationaryObject_Classification_Density_DENSITY_OTHER;
  static constexpr Density DENSITY_SOLID =
    StationaryObject_Classification_Density_DENSITY_SOLID;
  static constexpr Density DENSITY_SMALL_MESH =
    StationaryObject_Classification_Density_DENSITY_SMALL_MESH;
  static constexpr Density DENSITY_MEDIAN_MESH =
    StationaryObject_Classification_Density_DENSITY_MEDIAN_MESH;
  static constexpr Density DENSITY_LARGE_MESH =
    StationaryObject_Classification_Density_DENSITY_LARGE_MESH;
  static constexpr Density DENSITY_OPEN =
    StationaryObject_Classification_Density_DENSITY_OPEN;
  static inline bool Density_IsValid(int value) {
    return StationaryObject_Classification_Density_IsValid(value);
  }
  static constexpr Density Density_MIN =
    StationaryObject_Classification_Density_Density_MIN;
  static constexpr Density Density_MAX =
    StationaryObject_Classification_Density_Density_MAX;
  static constexpr int Density_ARRAYSIZE =
    StationaryObject_Classification_Density_Density_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Density_descriptor() {
    return StationaryObject_Classification_Density_descriptor();
  }
  template<typename T>
  static inline const std::string& Density_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Density>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Density_Name.");
    return StationaryObject_Classification_Density_Name(enum_t_value);
  }
  static inline bool Density_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Density* value) {
    return StationaryObject_Classification_Density_Parse(name, value);
  }

  typedef StationaryObject_Classification_Color Color;
  static constexpr Color COLOR_UNKNOWN =
    StationaryObject_Classification_Color_COLOR_UNKNOWN;
  static constexpr Color COLOR_OTHER =
    StationaryObject_Classification_Color_COLOR_OTHER;
  static constexpr Color COLOR_YELLOW =
    StationaryObject_Classification_Color_COLOR_YELLOW;
  static constexpr Color COLOR_GREEN =
    StationaryObject_Classification_Color_COLOR_GREEN;
  static constexpr Color COLOR_BLUE =
    StationaryObject_Classification_Color_COLOR_BLUE;
  static constexpr Color COLOR_VIOLET =
    StationaryObject_Classification_Color_COLOR_VIOLET;
  static constexpr Color COLOR_RED =
    StationaryObject_Classification_Color_COLOR_RED;
  static constexpr Color COLOR_ORANGE =
    StationaryObject_Classification_Color_COLOR_ORANGE;
  static constexpr Color COLOR_BLACK =
    StationaryObject_Classification_Color_COLOR_BLACK;
  static constexpr Color COLOR_GREY =
    StationaryObject_Classification_Color_COLOR_GREY;
  static constexpr Color COLOR_WHITE =
    StationaryObject_Classification_Color_COLOR_WHITE;
  static inline bool Color_IsValid(int value) {
    return StationaryObject_Classification_Color_IsValid(value);
  }
  static constexpr Color Color_MIN =
    StationaryObject_Classification_Color_Color_MIN;
  static constexpr Color Color_MAX =
    StationaryObject_Classification_Color_Color_MAX;
  static constexpr int Color_ARRAYSIZE =
    StationaryObject_Classification_Color_Color_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Color_descriptor() {
    return StationaryObject_Classification_Color_descriptor();
  }
  template<typename T>
  static inline const std::string& Color_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Color>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Color_Name.");
    return StationaryObject_Classification_Color_Name(enum_t_value);
  }
  static inline bool Color_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Color* value) {
    return StationaryObject_Classification_Color_Parse(name, value);
  }

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

  enum : int {
    kTypeFieldNumber = 1,
    kMaterialFieldNumber = 2,
    kDensityFieldNumber = 3,
    kColorFieldNumber = 4,
  };
  // .osi3.StationaryObject.Classification.Type type = 1;
  void clear_type();
  ::osi3::StationaryObject_Classification_Type type() const;
  void set_type(::osi3::StationaryObject_Classification_Type value);
  private:
  ::osi3::StationaryObject_Classification_Type _internal_type() const;
  void _internal_set_type(::osi3::StationaryObject_Classification_Type value);
  public:

  // .osi3.StationaryObject.Classification.Material material = 2;
  void clear_material();
  ::osi3::StationaryObject_Classification_Material material() const;
  void set_material(::osi3::StationaryObject_Classification_Material value);
  private:
  ::osi3::StationaryObject_Classification_Material _internal_material() const;
  void _internal_set_material(::osi3::StationaryObject_Classification_Material value);
  public:

  // .osi3.StationaryObject.Classification.Density density = 3;
  void clear_density();
  ::osi3::StationaryObject_Classification_Density density() const;
  void set_density(::osi3::StationaryObject_Classification_Density value);
  private:
  ::osi3::StationaryObject_Classification_Density _internal_density() const;
  void _internal_set_density(::osi3::StationaryObject_Classification_Density value);
  public:

  // .osi3.StationaryObject.Classification.Color color = 4;
  void clear_color();
  ::osi3::StationaryObject_Classification_Color color() const;
  void set_color(::osi3::StationaryObject_Classification_Color value);
  private:
  ::osi3::StationaryObject_Classification_Color _internal_color() const;
  void _internal_set_color(::osi3::StationaryObject_Classification_Color value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int type_;
  int material_;
  int density_;
  int color_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline StationaryObject& operator=(const StationaryObject& from) {
    CopyFrom(from);
    return *this;
  }
  inline StationaryObject& operator=(StationaryObject&& 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 StationaryObject& default_instance() {
    return *internal_default_instance();
  }
  static inline const StationaryObject* internal_default_instance() {
    return reinterpret_cast<const StationaryObject*>(
               &_StationaryObject_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

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

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

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

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

  public:

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

  typedef StationaryObject_Classification Classification;

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

  enum : int {
    kModelReferenceFieldNumber = 4,
    kIdFieldNumber = 1,
    kBaseFieldNumber = 2,
    kClassificationFieldNumber = 3,
  };
  // string model_reference = 4;
  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.Identifier id = 1;
  bool has_id() const;
  private:
  bool _internal_has_id() const;
  public:
  void clear_id();
  const ::osi3::Identifier& id() const;
  ::osi3::Identifier* release_id();
  ::osi3::Identifier* mutable_id();
  void set_allocated_id(::osi3::Identifier* id);
  private:
  const ::osi3::Identifier& _internal_id() const;
  ::osi3::Identifier* _internal_mutable_id();
  public:
  void unsafe_arena_set_allocated_id(
      ::osi3::Identifier* id);
  ::osi3::Identifier* unsafe_arena_release_id();

  // .osi3.BaseStationary base = 2;
  bool has_base() const;
  private:
  bool _internal_has_base() const;
  public:
  void clear_base();
  const ::osi3::BaseStationary& base() const;
  ::osi3::BaseStationary* release_base();
  ::osi3::BaseStationary* mutable_base();
  void set_allocated_base(::osi3::BaseStationary* base);
  private:
  const ::osi3::BaseStationary& _internal_base() const;
  ::osi3::BaseStationary* _internal_mutable_base();
  public:
  void unsafe_arena_set_allocated_base(
      ::osi3::BaseStationary* base);
  ::osi3::BaseStationary* unsafe_arena_release_base();

  // .osi3.StationaryObject.Classification classification = 3;
  bool has_classification() const;
  private:
  bool _internal_has_classification() const;
  public:
  void clear_classification();
  const ::osi3::StationaryObject_Classification& classification() const;
  ::osi3::StationaryObject_Classification* release_classification();
  ::osi3::StationaryObject_Classification* mutable_classification();
  void set_allocated_classification(::osi3::StationaryObject_Classification* classification);
  private:
  const ::osi3::StationaryObject_Classification& _internal_classification() const;
  ::osi3::StationaryObject_Classification* _internal_mutable_classification();
  public:
  void unsafe_arena_set_allocated_classification(
      ::osi3::StationaryObject_Classification* classification);
  ::osi3::StationaryObject_Classification* unsafe_arena_release_classification();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr model_reference_;
  ::osi3::Identifier* id_;
  ::osi3::BaseStationary* base_;
  ::osi3::StationaryObject_Classification* classification_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject_VehicleAttributes_WheelData& operator=(const MovingObject_VehicleAttributes_WheelData& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject_VehicleAttributes_WheelData& operator=(MovingObject_VehicleAttributes_WheelData&& 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 MovingObject_VehicleAttributes_WheelData& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject_VehicleAttributes_WheelData* internal_default_instance() {
    return reinterpret_cast<const MovingObject_VehicleAttributes_WheelData*>(
               &_MovingObject_VehicleAttributes_WheelData_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

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

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

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

  MovingObject_VehicleAttributes_WheelData* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MovingObject_VehicleAttributes_WheelData>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MovingObject_VehicleAttributes_WheelData& from);
  void MergeFrom(const MovingObject_VehicleAttributes_WheelData& 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(MovingObject_VehicleAttributes_WheelData* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.MovingObject.VehicleAttributes.WheelData";
  }
  protected:
  explicit MovingObject_VehicleAttributes_WheelData(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

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

  enum : int {
    kModelReferenceFieldNumber = 9,
    kPositionFieldNumber = 3,
    kOrientationFieldNumber = 7,
    kAxleFieldNumber = 1,
    kIndexFieldNumber = 2,
    kWheelRadiusFieldNumber = 4,
    kRimRadiusFieldNumber = 5,
    kWidthFieldNumber = 6,
    kRotationRateFieldNumber = 8,
  };
  // string model_reference = 9;
  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.Vector3d position = 3;
  bool has_position() const;
  private:
  bool _internal_has_position() const;
  public:
  void clear_position();
  const ::osi3::Vector3d& position() const;
  ::osi3::Vector3d* release_position();
  ::osi3::Vector3d* mutable_position();
  void set_allocated_position(::osi3::Vector3d* position);
  private:
  const ::osi3::Vector3d& _internal_position() const;
  ::osi3::Vector3d* _internal_mutable_position();
  public:
  void unsafe_arena_set_allocated_position(
      ::osi3::Vector3d* position);
  ::osi3::Vector3d* unsafe_arena_release_position();

  // .osi3.Orientation3d orientation = 7;
  bool has_orientation() const;
  private:
  bool _internal_has_orientation() const;
  public:
  void clear_orientation();
  const ::osi3::Orientation3d& orientation() const;
  ::osi3::Orientation3d* release_orientation();
  ::osi3::Orientation3d* mutable_orientation();
  void set_allocated_orientation(::osi3::Orientation3d* orientation);
  private:
  const ::osi3::Orientation3d& _internal_orientation() const;
  ::osi3::Orientation3d* _internal_mutable_orientation();
  public:
  void unsafe_arena_set_allocated_orientation(
      ::osi3::Orientation3d* orientation);
  ::osi3::Orientation3d* unsafe_arena_release_orientation();

  // uint32 axle = 1;
  void clear_axle();
  ::PROTOBUF_NAMESPACE_ID::uint32 axle() const;
  void set_axle(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_axle() const;
  void _internal_set_axle(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // uint32 index = 2;
  void clear_index();
  ::PROTOBUF_NAMESPACE_ID::uint32 index() const;
  void set_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_index() const;
  void _internal_set_index(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // double wheel_radius = 4;
  void clear_wheel_radius();
  double wheel_radius() const;
  void set_wheel_radius(double value);
  private:
  double _internal_wheel_radius() const;
  void _internal_set_wheel_radius(double value);
  public:

  // double rim_radius = 5;
  void clear_rim_radius();
  double rim_radius() const;
  void set_rim_radius(double value);
  private:
  double _internal_rim_radius() const;
  void _internal_set_rim_radius(double value);
  public:

  // double width = 6;
  void clear_width();
  double width() const;
  void set_width(double value);
  private:
  double _internal_width() const;
  void _internal_set_width(double value);
  public:

  // double rotation_rate = 8;
  void clear_rotation_rate();
  double rotation_rate() const;
  void set_rotation_rate(double value);
  private:
  double _internal_rotation_rate() const;
  void _internal_set_rotation_rate(double value);
  public:

  // @@protoc_insertion_point(class_scope:osi3.MovingObject.VehicleAttributes.WheelData)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr model_reference_;
  ::osi3::Vector3d* position_;
  ::osi3::Orientation3d* orientation_;
  ::PROTOBUF_NAMESPACE_ID::uint32 axle_;
  ::PROTOBUF_NAMESPACE_ID::uint32 index_;
  double wheel_radius_;
  double rim_radius_;
  double width_;
  double rotation_rate_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject_VehicleAttributes& operator=(const MovingObject_VehicleAttributes& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject_VehicleAttributes& operator=(MovingObject_VehicleAttributes&& 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 MovingObject_VehicleAttributes& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject_VehicleAttributes* internal_default_instance() {
    return reinterpret_cast<const MovingObject_VehicleAttributes*>(
               &_MovingObject_VehicleAttributes_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

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

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

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

  MovingObject_VehicleAttributes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MovingObject_VehicleAttributes>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MovingObject_VehicleAttributes& from);
  void MergeFrom(const MovingObject_VehicleAttributes& 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(MovingObject_VehicleAttributes* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.MovingObject.VehicleAttributes";
  }
  protected:
  explicit MovingObject_VehicleAttributes(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

  typedef MovingObject_VehicleAttributes_WheelData WheelData;

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

  enum : int {
    kWheelDataFieldNumber = 7,
    kDriverIdFieldNumber = 1,
    kBbcenterToRearFieldNumber = 4,
    kBbcenterToFrontFieldNumber = 5,
    kRadiusWheelFieldNumber = 2,
    kGroundClearanceFieldNumber = 6,
    kSteeringWheelAngleFieldNumber = 8,
    kNumberWheelsFieldNumber = 3,
  };
  // repeated .osi3.MovingObject.VehicleAttributes.WheelData wheel_data = 7;
  int wheel_data_size() const;
  private:
  int _internal_wheel_data_size() const;
  public:
  void clear_wheel_data();
  ::osi3::MovingObject_VehicleAttributes_WheelData* mutable_wheel_data(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject_VehicleAttributes_WheelData >*
      mutable_wheel_data();
  private:
  const ::osi3::MovingObject_VehicleAttributes_WheelData& _internal_wheel_data(int index) const;
  ::osi3::MovingObject_VehicleAttributes_WheelData* _internal_add_wheel_data();
  public:
  const ::osi3::MovingObject_VehicleAttributes_WheelData& wheel_data(int index) const;
  ::osi3::MovingObject_VehicleAttributes_WheelData* add_wheel_data();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject_VehicleAttributes_WheelData >&
      wheel_data() const;

  // .osi3.Identifier driver_id = 1;
  bool has_driver_id() const;
  private:
  bool _internal_has_driver_id() const;
  public:
  void clear_driver_id();
  const ::osi3::Identifier& driver_id() const;
  ::osi3::Identifier* release_driver_id();
  ::osi3::Identifier* mutable_driver_id();
  void set_allocated_driver_id(::osi3::Identifier* driver_id);
  private:
  const ::osi3::Identifier& _internal_driver_id() const;
  ::osi3::Identifier* _internal_mutable_driver_id();
  public:
  void unsafe_arena_set_allocated_driver_id(
      ::osi3::Identifier* driver_id);
  ::osi3::Identifier* unsafe_arena_release_driver_id();

  // .osi3.Vector3d bbcenter_to_rear = 4;
  bool has_bbcenter_to_rear() const;
  private:
  bool _internal_has_bbcenter_to_rear() const;
  public:
  void clear_bbcenter_to_rear();
  const ::osi3::Vector3d& bbcenter_to_rear() const;
  ::osi3::Vector3d* release_bbcenter_to_rear();
  ::osi3::Vector3d* mutable_bbcenter_to_rear();
  void set_allocated_bbcenter_to_rear(::osi3::Vector3d* bbcenter_to_rear);
  private:
  const ::osi3::Vector3d& _internal_bbcenter_to_rear() const;
  ::osi3::Vector3d* _internal_mutable_bbcenter_to_rear();
  public:
  void unsafe_arena_set_allocated_bbcenter_to_rear(
      ::osi3::Vector3d* bbcenter_to_rear);
  ::osi3::Vector3d* unsafe_arena_release_bbcenter_to_rear();

  // .osi3.Vector3d bbcenter_to_front = 5;
  bool has_bbcenter_to_front() const;
  private:
  bool _internal_has_bbcenter_to_front() const;
  public:
  void clear_bbcenter_to_front();
  const ::osi3::Vector3d& bbcenter_to_front() const;
  ::osi3::Vector3d* release_bbcenter_to_front();
  ::osi3::Vector3d* mutable_bbcenter_to_front();
  void set_allocated_bbcenter_to_front(::osi3::Vector3d* bbcenter_to_front);
  private:
  const ::osi3::Vector3d& _internal_bbcenter_to_front() const;
  ::osi3::Vector3d* _internal_mutable_bbcenter_to_front();
  public:
  void unsafe_arena_set_allocated_bbcenter_to_front(
      ::osi3::Vector3d* bbcenter_to_front);
  ::osi3::Vector3d* unsafe_arena_release_bbcenter_to_front();

  // double radius_wheel = 2;
  void clear_radius_wheel();
  double radius_wheel() const;
  void set_radius_wheel(double value);
  private:
  double _internal_radius_wheel() const;
  void _internal_set_radius_wheel(double value);
  public:

  // double ground_clearance = 6;
  void clear_ground_clearance();
  double ground_clearance() const;
  void set_ground_clearance(double value);
  private:
  double _internal_ground_clearance() const;
  void _internal_set_ground_clearance(double value);
  public:

  // double steering_wheel_angle = 8;
  void clear_steering_wheel_angle();
  double steering_wheel_angle() const;
  void set_steering_wheel_angle(double value);
  private:
  double _internal_steering_wheel_angle() const;
  void _internal_set_steering_wheel_angle(double value);
  public:

  // uint32 number_wheels = 3;
  void clear_number_wheels();
  ::PROTOBUF_NAMESPACE_ID::uint32 number_wheels() const;
  void set_number_wheels(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_number_wheels() const;
  void _internal_set_number_wheels(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject_VehicleAttributes_WheelData > wheel_data_;
  ::osi3::Identifier* driver_id_;
  ::osi3::Vector3d* bbcenter_to_rear_;
  ::osi3::Vector3d* bbcenter_to_front_;
  double radius_wheel_;
  double ground_clearance_;
  double steering_wheel_angle_;
  ::PROTOBUF_NAMESPACE_ID::uint32 number_wheels_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject_MovingObjectClassification& operator=(const MovingObject_MovingObjectClassification& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject_MovingObjectClassification& operator=(MovingObject_MovingObjectClassification&& 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 MovingObject_MovingObjectClassification& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject_MovingObjectClassification* internal_default_instance() {
    return reinterpret_cast<const MovingObject_MovingObjectClassification*>(
               &_MovingObject_MovingObjectClassification_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

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

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

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

  MovingObject_MovingObjectClassification* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MovingObject_MovingObjectClassification>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MovingObject_MovingObjectClassification& from);
  void MergeFrom(const MovingObject_MovingObjectClassification& 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(MovingObject_MovingObjectClassification* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.MovingObject.MovingObjectClassification";
  }
  protected:
  explicit MovingObject_MovingObjectClassification(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

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

  enum : int {
    kAssignedLaneIdFieldNumber = 1,
    kAssignedLanePercentageFieldNumber = 2,
  };
  // repeated .osi3.Identifier assigned_lane_id = 1;
  int assigned_lane_id_size() const;
  private:
  int _internal_assigned_lane_id_size() const;
  public:
  void clear_assigned_lane_id();
  ::osi3::Identifier* mutable_assigned_lane_id(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
      mutable_assigned_lane_id();
  private:
  const ::osi3::Identifier& _internal_assigned_lane_id(int index) const;
  ::osi3::Identifier* _internal_add_assigned_lane_id();
  public:
  const ::osi3::Identifier& assigned_lane_id(int index) const;
  ::osi3::Identifier* add_assigned_lane_id();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
      assigned_lane_id() const;

  // repeated double assigned_lane_percentage = 2;
  int assigned_lane_percentage_size() const;
  private:
  int _internal_assigned_lane_percentage_size() const;
  public:
  void clear_assigned_lane_percentage();
  private:
  double _internal_assigned_lane_percentage(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      _internal_assigned_lane_percentage() const;
  void _internal_add_assigned_lane_percentage(double value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      _internal_mutable_assigned_lane_percentage();
  public:
  double assigned_lane_percentage(int index) const;
  void set_assigned_lane_percentage(int index, double value);
  void add_assigned_lane_percentage(double value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
      assigned_lane_percentage() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
      mutable_assigned_lane_percentage();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier > assigned_lane_id_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< double > assigned_lane_percentage_;
  mutable std::atomic<int> _assigned_lane_percentage_cached_byte_size_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject_VehicleClassification_LightState& operator=(const MovingObject_VehicleClassification_LightState& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject_VehicleClassification_LightState& operator=(MovingObject_VehicleClassification_LightState&& 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 MovingObject_VehicleClassification_LightState& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject_VehicleClassification_LightState* internal_default_instance() {
    return reinterpret_cast<const MovingObject_VehicleClassification_LightState*>(
               &_MovingObject_VehicleClassification_LightState_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

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

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

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

  MovingObject_VehicleClassification_LightState* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MovingObject_VehicleClassification_LightState>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MovingObject_VehicleClassification_LightState& from);
  void MergeFrom(const MovingObject_VehicleClassification_LightState& 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(MovingObject_VehicleClassification_LightState* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.MovingObject.VehicleClassification.LightState";
  }
  protected:
  explicit MovingObject_VehicleClassification_LightState(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

  typedef MovingObject_VehicleClassification_LightState_IndicatorState IndicatorState;
  static constexpr IndicatorState INDICATOR_STATE_UNKNOWN =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_UNKNOWN;
  static constexpr IndicatorState INDICATOR_STATE_OTHER =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_OTHER;
  static constexpr IndicatorState INDICATOR_STATE_OFF =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_OFF;
  static constexpr IndicatorState INDICATOR_STATE_LEFT =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_LEFT;
  static constexpr IndicatorState INDICATOR_STATE_RIGHT =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_RIGHT;
  static constexpr IndicatorState INDICATOR_STATE_WARNING =
    MovingObject_VehicleClassification_LightState_IndicatorState_INDICATOR_STATE_WARNING;
  static inline bool IndicatorState_IsValid(int value) {
    return MovingObject_VehicleClassification_LightState_IndicatorState_IsValid(value);
  }
  static constexpr IndicatorState IndicatorState_MIN =
    MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_MIN;
  static constexpr IndicatorState IndicatorState_MAX =
    MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_MAX;
  static constexpr int IndicatorState_ARRAYSIZE =
    MovingObject_VehicleClassification_LightState_IndicatorState_IndicatorState_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  IndicatorState_descriptor() {
    return MovingObject_VehicleClassification_LightState_IndicatorState_descriptor();
  }
  template<typename T>
  static inline const std::string& IndicatorState_Name(T enum_t_value) {
    static_assert(::std::is_same<T, IndicatorState>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function IndicatorState_Name.");
    return MovingObject_VehicleClassification_LightState_IndicatorState_Name(enum_t_value);
  }
  static inline bool IndicatorState_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      IndicatorState* value) {
    return MovingObject_VehicleClassification_LightState_IndicatorState_Parse(name, value);
  }

  typedef MovingObject_VehicleClassification_LightState_GenericLightState GenericLightState;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_UNKNOWN =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_UNKNOWN;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_OTHER =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_OTHER;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_OFF =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_OFF;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_ON =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_ON;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_FLASHING_BLUE =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_BLUE;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_FLASHING_BLUE_AND_RED =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_BLUE_AND_RED;
  static constexpr GenericLightState GENERIC_LIGHT_STATE_FLASHING_AMBER =
    MovingObject_VehicleClassification_LightState_GenericLightState_GENERIC_LIGHT_STATE_FLASHING_AMBER;
  static inline bool GenericLightState_IsValid(int value) {
    return MovingObject_VehicleClassification_LightState_GenericLightState_IsValid(value);
  }
  static constexpr GenericLightState GenericLightState_MIN =
    MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_MIN;
  static constexpr GenericLightState GenericLightState_MAX =
    MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_MAX;
  static constexpr int GenericLightState_ARRAYSIZE =
    MovingObject_VehicleClassification_LightState_GenericLightState_GenericLightState_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  GenericLightState_descriptor() {
    return MovingObject_VehicleClassification_LightState_GenericLightState_descriptor();
  }
  template<typename T>
  static inline const std::string& GenericLightState_Name(T enum_t_value) {
    static_assert(::std::is_same<T, GenericLightState>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function GenericLightState_Name.");
    return MovingObject_VehicleClassification_LightState_GenericLightState_Name(enum_t_value);
  }
  static inline bool GenericLightState_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      GenericLightState* value) {
    return MovingObject_VehicleClassification_LightState_GenericLightState_Parse(name, value);
  }

  typedef MovingObject_VehicleClassification_LightState_BrakeLightState BrakeLightState;
  static constexpr BrakeLightState BRAKE_LIGHT_STATE_UNKNOWN =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_UNKNOWN;
  static constexpr BrakeLightState BRAKE_LIGHT_STATE_OTHER =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_OTHER;
  static constexpr BrakeLightState BRAKE_LIGHT_STATE_OFF =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_OFF;
  static constexpr BrakeLightState BRAKE_LIGHT_STATE_NORMAL =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_NORMAL;
  static constexpr BrakeLightState BRAKE_LIGHT_STATE_STRONG =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BRAKE_LIGHT_STATE_STRONG;
  static inline bool BrakeLightState_IsValid(int value) {
    return MovingObject_VehicleClassification_LightState_BrakeLightState_IsValid(value);
  }
  static constexpr BrakeLightState BrakeLightState_MIN =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_MIN;
  static constexpr BrakeLightState BrakeLightState_MAX =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_MAX;
  static constexpr int BrakeLightState_ARRAYSIZE =
    MovingObject_VehicleClassification_LightState_BrakeLightState_BrakeLightState_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  BrakeLightState_descriptor() {
    return MovingObject_VehicleClassification_LightState_BrakeLightState_descriptor();
  }
  template<typename T>
  static inline const std::string& BrakeLightState_Name(T enum_t_value) {
    static_assert(::std::is_same<T, BrakeLightState>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function BrakeLightState_Name.");
    return MovingObject_VehicleClassification_LightState_BrakeLightState_Name(enum_t_value);
  }
  static inline bool BrakeLightState_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      BrakeLightState* value) {
    return MovingObject_VehicleClassification_LightState_BrakeLightState_Parse(name, value);
  }

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

  enum : int {
    kIndicatorStateFieldNumber = 1,
    kFrontFogLightFieldNumber = 2,
    kRearFogLightFieldNumber = 3,
    kHeadLightFieldNumber = 4,
    kHighBeamFieldNumber = 5,
    kReversingLightFieldNumber = 6,
    kBrakeLightStateFieldNumber = 7,
    kLicensePlateIlluminationRearFieldNumber = 8,
    kEmergencyVehicleIlluminationFieldNumber = 9,
    kServiceVehicleIlluminationFieldNumber = 10,
  };
  // .osi3.MovingObject.VehicleClassification.LightState.IndicatorState indicator_state = 1;
  void clear_indicator_state();
  ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState indicator_state() const;
  void set_indicator_state(::osi3::MovingObject_VehicleClassification_LightState_IndicatorState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState _internal_indicator_state() const;
  void _internal_set_indicator_state(::osi3::MovingObject_VehicleClassification_LightState_IndicatorState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState front_fog_light = 2;
  void clear_front_fog_light();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState front_fog_light() const;
  void set_front_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_front_fog_light() const;
  void _internal_set_front_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState rear_fog_light = 3;
  void clear_rear_fog_light();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState rear_fog_light() const;
  void set_rear_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_rear_fog_light() const;
  void _internal_set_rear_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState head_light = 4;
  void clear_head_light();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState head_light() const;
  void set_head_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_head_light() const;
  void _internal_set_head_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState high_beam = 5;
  void clear_high_beam();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState high_beam() const;
  void set_high_beam(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_high_beam() const;
  void _internal_set_high_beam(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState reversing_light = 6;
  void clear_reversing_light();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState reversing_light() const;
  void set_reversing_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_reversing_light() const;
  void _internal_set_reversing_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.BrakeLightState brake_light_state = 7;
  void clear_brake_light_state();
  ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState brake_light_state() const;
  void set_brake_light_state(::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState _internal_brake_light_state() const;
  void _internal_set_brake_light_state(::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState license_plate_illumination_rear = 8;
  void clear_license_plate_illumination_rear();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState license_plate_illumination_rear() const;
  void set_license_plate_illumination_rear(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_license_plate_illumination_rear() const;
  void _internal_set_license_plate_illumination_rear(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState emergency_vehicle_illumination = 9;
  void clear_emergency_vehicle_illumination();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState emergency_vehicle_illumination() const;
  void set_emergency_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_emergency_vehicle_illumination() const;
  void _internal_set_emergency_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // .osi3.MovingObject.VehicleClassification.LightState.GenericLightState service_vehicle_illumination = 10;
  void clear_service_vehicle_illumination();
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState service_vehicle_illumination() const;
  void set_service_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  private:
  ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState _internal_service_vehicle_illumination() const;
  void _internal_set_service_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value);
  public:

  // @@protoc_insertion_point(class_scope:osi3.MovingObject.VehicleClassification.LightState)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  int indicator_state_;
  int front_fog_light_;
  int rear_fog_light_;
  int head_light_;
  int high_beam_;
  int reversing_light_;
  int brake_light_state_;
  int license_plate_illumination_rear_;
  int emergency_vehicle_illumination_;
  int service_vehicle_illumination_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject_VehicleClassification& operator=(const MovingObject_VehicleClassification& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject_VehicleClassification& operator=(MovingObject_VehicleClassification&& 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 MovingObject_VehicleClassification& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject_VehicleClassification* internal_default_instance() {
    return reinterpret_cast<const MovingObject_VehicleClassification*>(
               &_MovingObject_VehicleClassification_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

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

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

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

  MovingObject_VehicleClassification* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<MovingObject_VehicleClassification>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const MovingObject_VehicleClassification& from);
  void MergeFrom(const MovingObject_VehicleClassification& 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(MovingObject_VehicleClassification* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.MovingObject.VehicleClassification";
  }
  protected:
  explicit MovingObject_VehicleClassification(::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_5fobject_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

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

  typedef MovingObject_VehicleClassification_LightState LightState;

  typedef MovingObject_VehicleClassification_Type Type;
  static constexpr Type TYPE_UNKNOWN =
    MovingObject_VehicleClassification_Type_TYPE_UNKNOWN;
  static constexpr Type TYPE_OTHER =
    MovingObject_VehicleClassification_Type_TYPE_OTHER;
  static constexpr Type TYPE_SMALL_CAR =
    MovingObject_VehicleClassification_Type_TYPE_SMALL_CAR;
  static constexpr Type TYPE_COMPACT_CAR =
    MovingObject_VehicleClassification_Type_TYPE_COMPACT_CAR;
  static constexpr Type TYPE_MEDIUM_CAR =
    MovingObject_VehicleClassification_Type_TYPE_MEDIUM_CAR;
  static constexpr Type TYPE_LUXURY_CAR =
    MovingObject_VehicleClassification_Type_TYPE_LUXURY_CAR;
  static constexpr Type TYPE_DELIVERY_VAN =
    MovingObject_VehicleClassification_Type_TYPE_DELIVERY_VAN;
  static constexpr Type TYPE_HEAVY_TRUCK =
    MovingObject_VehicleClassification_Type_TYPE_HEAVY_TRUCK;
  static constexpr Type TYPE_SEMITRAILER =
    MovingObject_VehicleClassification_Type_TYPE_SEMITRAILER;
  static constexpr Type TYPE_TRAILER =
    MovingObject_VehicleClassification_Type_TYPE_TRAILER;
  static constexpr Type TYPE_MOTORBIKE =
    MovingObject_VehicleClassification_Type_TYPE_MOTORBIKE;
  static constexpr Type TYPE_BICYCLE =
    MovingObject_VehicleClassification_Type_TYPE_BICYCLE;
  static constexpr Type TYPE_BUS =
    MovingObject_VehicleClassification_Type_TYPE_BUS;
  static constexpr Type TYPE_TRAM =
    MovingObject_VehicleClassification_Type_TYPE_TRAM;
  static constexpr Type TYPE_TRAIN =
    MovingObject_VehicleClassification_Type_TYPE_TRAIN;
  static constexpr Type TYPE_WHEELCHAIR =
    MovingObject_VehicleClassification_Type_TYPE_WHEELCHAIR;
  static inline bool Type_IsValid(int value) {
    return MovingObject_VehicleClassification_Type_IsValid(value);
  }
  static constexpr Type Type_MIN =
    MovingObject_VehicleClassification_Type_Type_MIN;
  static constexpr Type Type_MAX =
    MovingObject_VehicleClassification_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE =
    MovingObject_VehicleClassification_Type_Type_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Type_descriptor() {
    return MovingObject_VehicleClassification_Type_descriptor();
  }
  template<typename T>
  static inline const std::string& Type_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Type>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Type_Name.");
    return MovingObject_VehicleClassification_Type_Name(enum_t_value);
  }
  static inline bool Type_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Type* value) {
    return MovingObject_VehicleClassification_Type_Parse(name, value);
  }

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

  enum : int {
    kLightStateFieldNumber = 2,
    kTrailerIdFieldNumber = 4,
    kTypeFieldNumber = 1,
    kHasTrailerFieldNumber = 3,
  };
  // .osi3.MovingObject.VehicleClassification.LightState light_state = 2;
  bool has_light_state() const;
  private:
  bool _internal_has_light_state() const;
  public:
  void clear_light_state();
  const ::osi3::MovingObject_VehicleClassification_LightState& light_state() const;
  ::osi3::MovingObject_VehicleClassification_LightState* release_light_state();
  ::osi3::MovingObject_VehicleClassification_LightState* mutable_light_state();
  void set_allocated_light_state(::osi3::MovingObject_VehicleClassification_LightState* light_state);
  private:
  const ::osi3::MovingObject_VehicleClassification_LightState& _internal_light_state() const;
  ::osi3::MovingObject_VehicleClassification_LightState* _internal_mutable_light_state();
  public:
  void unsafe_arena_set_allocated_light_state(
      ::osi3::MovingObject_VehicleClassification_LightState* light_state);
  ::osi3::MovingObject_VehicleClassification_LightState* unsafe_arena_release_light_state();

  // .osi3.Identifier trailer_id = 4;
  bool has_trailer_id() const;
  private:
  bool _internal_has_trailer_id() const;
  public:
  void clear_trailer_id();
  const ::osi3::Identifier& trailer_id() const;
  ::osi3::Identifier* release_trailer_id();
  ::osi3::Identifier* mutable_trailer_id();
  void set_allocated_trailer_id(::osi3::Identifier* trailer_id);
  private:
  const ::osi3::Identifier& _internal_trailer_id() const;
  ::osi3::Identifier* _internal_mutable_trailer_id();
  public:
  void unsafe_arena_set_allocated_trailer_id(
      ::osi3::Identifier* trailer_id);
  ::osi3::Identifier* unsafe_arena_release_trailer_id();

  // .osi3.MovingObject.VehicleClassification.Type type = 1;
  void clear_type();
  ::osi3::MovingObject_VehicleClassification_Type type() const;
  void set_type(::osi3::MovingObject_VehicleClassification_Type value);
  private:
  ::osi3::MovingObject_VehicleClassification_Type _internal_type() const;
  void _internal_set_type(::osi3::MovingObject_VehicleClassification_Type value);
  public:

  // bool has_trailer = 3;
  void clear_has_trailer();
  bool has_trailer() const;
  void set_has_trailer(bool value);
  private:
  bool _internal_has_trailer() const;
  void _internal_set_has_trailer(bool value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::MovingObject_VehicleClassification_LightState* light_state_;
  ::osi3::Identifier* trailer_id_;
  int type_;
  bool has_trailer_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// -------------------------------------------------------------------

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

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

  inline MovingObject& operator=(const MovingObject& from) {
    CopyFrom(from);
    return *this;
  }
  inline MovingObject& operator=(MovingObject&& 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 MovingObject& default_instance() {
    return *internal_default_instance();
  }
  static inline const MovingObject* internal_default_instance() {
    return reinterpret_cast<const MovingObject*>(
               &_MovingObject_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

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

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

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

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

  public:

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

  typedef MovingObject_VehicleAttributes VehicleAttributes;
  typedef MovingObject_MovingObjectClassification MovingObjectClassification;
  typedef MovingObject_VehicleClassification VehicleClassification;

  typedef MovingObject_Type Type;
  static constexpr Type TYPE_UNKNOWN =
    MovingObject_Type_TYPE_UNKNOWN;
  static constexpr Type TYPE_OTHER =
    MovingObject_Type_TYPE_OTHER;
  static constexpr Type TYPE_VEHICLE =
    MovingObject_Type_TYPE_VEHICLE;
  static constexpr Type TYPE_PEDESTRIAN =
    MovingObject_Type_TYPE_PEDESTRIAN;
  static constexpr Type TYPE_ANIMAL =
    MovingObject_Type_TYPE_ANIMAL;
  static inline bool Type_IsValid(int value) {
    return MovingObject_Type_IsValid(value);
  }
  static constexpr Type Type_MIN =
    MovingObject_Type_Type_MIN;
  static constexpr Type Type_MAX =
    MovingObject_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE =
    MovingObject_Type_Type_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Type_descriptor() {
    return MovingObject_Type_descriptor();
  }
  template<typename T>
  static inline const std::string& Type_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Type>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Type_Name.");
    return MovingObject_Type_Name(enum_t_value);
  }
  static inline bool Type_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Type* value) {
    return MovingObject_Type_Parse(name, value);
  }

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

  enum : int {
    kAssignedLaneIdFieldNumber = 4,
    kFutureTrajectoryFieldNumber = 8,
    kModelReferenceFieldNumber = 7,
    kIdFieldNumber = 1,
    kBaseFieldNumber = 2,
    kVehicleAttributesFieldNumber = 5,
    kVehicleClassificationFieldNumber = 6,
    kMovingObjectClassificationFieldNumber = 9,
    kTypeFieldNumber = 3,
  };
  // repeated .osi3.Identifier assigned_lane_id = 4;
  int assigned_lane_id_size() const;
  private:
  int _internal_assigned_lane_id_size() const;
  public:
  void clear_assigned_lane_id();
  ::osi3::Identifier* mutable_assigned_lane_id(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
      mutable_assigned_lane_id();
  private:
  const ::osi3::Identifier& _internal_assigned_lane_id(int index) const;
  ::osi3::Identifier* _internal_add_assigned_lane_id();
  public:
  const ::osi3::Identifier& assigned_lane_id(int index) const;
  ::osi3::Identifier* add_assigned_lane_id();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
      assigned_lane_id() const;

  // repeated .osi3.StatePoint future_trajectory = 8;
  int future_trajectory_size() const;
  private:
  int _internal_future_trajectory_size() const;
  public:
  void clear_future_trajectory();
  ::osi3::StatePoint* mutable_future_trajectory(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
      mutable_future_trajectory();
  private:
  const ::osi3::StatePoint& _internal_future_trajectory(int index) const;
  ::osi3::StatePoint* _internal_add_future_trajectory();
  public:
  const ::osi3::StatePoint& future_trajectory(int index) const;
  ::osi3::StatePoint* add_future_trajectory();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
      future_trajectory() const;

  // string model_reference = 7;
  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.Identifier id = 1;
  bool has_id() const;
  private:
  bool _internal_has_id() const;
  public:
  void clear_id();
  const ::osi3::Identifier& id() const;
  ::osi3::Identifier* release_id();
  ::osi3::Identifier* mutable_id();
  void set_allocated_id(::osi3::Identifier* id);
  private:
  const ::osi3::Identifier& _internal_id() const;
  ::osi3::Identifier* _internal_mutable_id();
  public:
  void unsafe_arena_set_allocated_id(
      ::osi3::Identifier* id);
  ::osi3::Identifier* unsafe_arena_release_id();

  // .osi3.BaseMoving base = 2;
  bool has_base() const;
  private:
  bool _internal_has_base() const;
  public:
  void clear_base();
  const ::osi3::BaseMoving& base() const;
  ::osi3::BaseMoving* release_base();
  ::osi3::BaseMoving* mutable_base();
  void set_allocated_base(::osi3::BaseMoving* base);
  private:
  const ::osi3::BaseMoving& _internal_base() const;
  ::osi3::BaseMoving* _internal_mutable_base();
  public:
  void unsafe_arena_set_allocated_base(
      ::osi3::BaseMoving* base);
  ::osi3::BaseMoving* unsafe_arena_release_base();

  // .osi3.MovingObject.VehicleAttributes vehicle_attributes = 5;
  bool has_vehicle_attributes() const;
  private:
  bool _internal_has_vehicle_attributes() const;
  public:
  void clear_vehicle_attributes();
  const ::osi3::MovingObject_VehicleAttributes& vehicle_attributes() const;
  ::osi3::MovingObject_VehicleAttributes* release_vehicle_attributes();
  ::osi3::MovingObject_VehicleAttributes* mutable_vehicle_attributes();
  void set_allocated_vehicle_attributes(::osi3::MovingObject_VehicleAttributes* vehicle_attributes);
  private:
  const ::osi3::MovingObject_VehicleAttributes& _internal_vehicle_attributes() const;
  ::osi3::MovingObject_VehicleAttributes* _internal_mutable_vehicle_attributes();
  public:
  void unsafe_arena_set_allocated_vehicle_attributes(
      ::osi3::MovingObject_VehicleAttributes* vehicle_attributes);
  ::osi3::MovingObject_VehicleAttributes* unsafe_arena_release_vehicle_attributes();

  // .osi3.MovingObject.VehicleClassification vehicle_classification = 6;
  bool has_vehicle_classification() const;
  private:
  bool _internal_has_vehicle_classification() const;
  public:
  void clear_vehicle_classification();
  const ::osi3::MovingObject_VehicleClassification& vehicle_classification() const;
  ::osi3::MovingObject_VehicleClassification* release_vehicle_classification();
  ::osi3::MovingObject_VehicleClassification* mutable_vehicle_classification();
  void set_allocated_vehicle_classification(::osi3::MovingObject_VehicleClassification* vehicle_classification);
  private:
  const ::osi3::MovingObject_VehicleClassification& _internal_vehicle_classification() const;
  ::osi3::MovingObject_VehicleClassification* _internal_mutable_vehicle_classification();
  public:
  void unsafe_arena_set_allocated_vehicle_classification(
      ::osi3::MovingObject_VehicleClassification* vehicle_classification);
  ::osi3::MovingObject_VehicleClassification* unsafe_arena_release_vehicle_classification();

  // .osi3.MovingObject.MovingObjectClassification moving_object_classification = 9;
  bool has_moving_object_classification() const;
  private:
  bool _internal_has_moving_object_classification() const;
  public:
  void clear_moving_object_classification();
  const ::osi3::MovingObject_MovingObjectClassification& moving_object_classification() const;
  ::osi3::MovingObject_MovingObjectClassification* release_moving_object_classification();
  ::osi3::MovingObject_MovingObjectClassification* mutable_moving_object_classification();
  void set_allocated_moving_object_classification(::osi3::MovingObject_MovingObjectClassification* moving_object_classification);
  private:
  const ::osi3::MovingObject_MovingObjectClassification& _internal_moving_object_classification() const;
  ::osi3::MovingObject_MovingObjectClassification* _internal_mutable_moving_object_classification();
  public:
  void unsafe_arena_set_allocated_moving_object_classification(
      ::osi3::MovingObject_MovingObjectClassification* moving_object_classification);
  ::osi3::MovingObject_MovingObjectClassification* unsafe_arena_release_moving_object_classification();

  // .osi3.MovingObject.Type type = 3;
  void clear_type();
  ::osi3::MovingObject_Type type() const;
  void set_type(::osi3::MovingObject_Type value);
  private:
  ::osi3::MovingObject_Type _internal_type() const;
  void _internal_set_type(::osi3::MovingObject_Type value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier > assigned_lane_id_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint > future_trajectory_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr model_reference_;
  ::osi3::Identifier* id_;
  ::osi3::BaseMoving* base_;
  ::osi3::MovingObject_VehicleAttributes* vehicle_attributes_;
  ::osi3::MovingObject_VehicleClassification* vehicle_classification_;
  ::osi3::MovingObject_MovingObjectClassification* moving_object_classification_;
  int type_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fobject_2eproto;
};
// ===================================================================


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

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

// .osi3.StationaryObject.Classification.Type type = 1;
inline void StationaryObject_Classification::clear_type() {
  type_ = 0;
}
inline ::osi3::StationaryObject_Classification_Type StationaryObject_Classification::_internal_type() const {
  return static_cast< ::osi3::StationaryObject_Classification_Type >(type_);
}
inline ::osi3::StationaryObject_Classification_Type StationaryObject_Classification::type() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.Classification.type)
  return _internal_type();
}
inline void StationaryObject_Classification::_internal_set_type(::osi3::StationaryObject_Classification_Type value) {
  
  type_ = value;
}
inline void StationaryObject_Classification::set_type(::osi3::StationaryObject_Classification_Type value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:osi3.StationaryObject.Classification.type)
}

// .osi3.StationaryObject.Classification.Material material = 2;
inline void StationaryObject_Classification::clear_material() {
  material_ = 0;
}
inline ::osi3::StationaryObject_Classification_Material StationaryObject_Classification::_internal_material() const {
  return static_cast< ::osi3::StationaryObject_Classification_Material >(material_);
}
inline ::osi3::StationaryObject_Classification_Material StationaryObject_Classification::material() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.Classification.material)
  return _internal_material();
}
inline void StationaryObject_Classification::_internal_set_material(::osi3::StationaryObject_Classification_Material value) {
  
  material_ = value;
}
inline void StationaryObject_Classification::set_material(::osi3::StationaryObject_Classification_Material value) {
  _internal_set_material(value);
  // @@protoc_insertion_point(field_set:osi3.StationaryObject.Classification.material)
}

// .osi3.StationaryObject.Classification.Density density = 3;
inline void StationaryObject_Classification::clear_density() {
  density_ = 0;
}
inline ::osi3::StationaryObject_Classification_Density StationaryObject_Classification::_internal_density() const {
  return static_cast< ::osi3::StationaryObject_Classification_Density >(density_);
}
inline ::osi3::StationaryObject_Classification_Density StationaryObject_Classification::density() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.Classification.density)
  return _internal_density();
}
inline void StationaryObject_Classification::_internal_set_density(::osi3::StationaryObject_Classification_Density value) {
  
  density_ = value;
}
inline void StationaryObject_Classification::set_density(::osi3::StationaryObject_Classification_Density value) {
  _internal_set_density(value);
  // @@protoc_insertion_point(field_set:osi3.StationaryObject.Classification.density)
}

// .osi3.StationaryObject.Classification.Color color = 4;
inline void StationaryObject_Classification::clear_color() {
  color_ = 0;
}
inline ::osi3::StationaryObject_Classification_Color StationaryObject_Classification::_internal_color() const {
  return static_cast< ::osi3::StationaryObject_Classification_Color >(color_);
}
inline ::osi3::StationaryObject_Classification_Color StationaryObject_Classification::color() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.Classification.color)
  return _internal_color();
}
inline void StationaryObject_Classification::_internal_set_color(::osi3::StationaryObject_Classification_Color value) {
  
  color_ = value;
}
inline void StationaryObject_Classification::set_color(::osi3::StationaryObject_Classification_Color value) {
  _internal_set_color(value);
  // @@protoc_insertion_point(field_set:osi3.StationaryObject.Classification.color)
}

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

// StationaryObject

// .osi3.Identifier id = 1;
inline bool StationaryObject::_internal_has_id() const {
  return this != internal_default_instance() && id_ != nullptr;
}
inline bool StationaryObject::has_id() const {
  return _internal_has_id();
}
inline const ::osi3::Identifier& StationaryObject::_internal_id() const {
  const ::osi3::Identifier* p = id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& StationaryObject::id() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.id)
  return _internal_id();
}
inline void StationaryObject::unsafe_arena_set_allocated_id(
    ::osi3::Identifier* id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(id_);
  }
  id_ = id;
  if (id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.StationaryObject.id)
}
inline ::osi3::Identifier* StationaryObject::release_id() {
  
  ::osi3::Identifier* temp = id_;
  id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* StationaryObject::unsafe_arena_release_id() {
  // @@protoc_insertion_point(field_release:osi3.StationaryObject.id)
  
  ::osi3::Identifier* temp = id_;
  id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* StationaryObject::_internal_mutable_id() {
  
  if (id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    id_ = p;
  }
  return id_;
}
inline ::osi3::Identifier* StationaryObject::mutable_id() {
  // @@protoc_insertion_point(field_mutable:osi3.StationaryObject.id)
  return _internal_mutable_id();
}
inline void StationaryObject::set_allocated_id(::osi3::Identifier* id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(id_);
  }
  if (id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(id)->GetArena();
    if (message_arena != submessage_arena) {
      id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, id, submessage_arena);
    }
    
  } else {
    
  }
  id_ = id;
  // @@protoc_insertion_point(field_set_allocated:osi3.StationaryObject.id)
}

// .osi3.BaseStationary base = 2;
inline bool StationaryObject::_internal_has_base() const {
  return this != internal_default_instance() && base_ != nullptr;
}
inline bool StationaryObject::has_base() const {
  return _internal_has_base();
}
inline const ::osi3::BaseStationary& StationaryObject::_internal_base() const {
  const ::osi3::BaseStationary* p = base_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::BaseStationary&>(
      ::osi3::_BaseStationary_default_instance_);
}
inline const ::osi3::BaseStationary& StationaryObject::base() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.base)
  return _internal_base();
}
inline void StationaryObject::unsafe_arena_set_allocated_base(
    ::osi3::BaseStationary* base) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_);
  }
  base_ = base;
  if (base) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.StationaryObject.base)
}
inline ::osi3::BaseStationary* StationaryObject::release_base() {
  
  ::osi3::BaseStationary* temp = base_;
  base_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::BaseStationary* StationaryObject::unsafe_arena_release_base() {
  // @@protoc_insertion_point(field_release:osi3.StationaryObject.base)
  
  ::osi3::BaseStationary* temp = base_;
  base_ = nullptr;
  return temp;
}
inline ::osi3::BaseStationary* StationaryObject::_internal_mutable_base() {
  
  if (base_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::BaseStationary>(GetArena());
    base_ = p;
  }
  return base_;
}
inline ::osi3::BaseStationary* StationaryObject::mutable_base() {
  // @@protoc_insertion_point(field_mutable:osi3.StationaryObject.base)
  return _internal_mutable_base();
}
inline void StationaryObject::set_allocated_base(::osi3::BaseStationary* base) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_);
  }
  if (base) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base)->GetArena();
    if (message_arena != submessage_arena) {
      base = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, base, submessage_arena);
    }
    
  } else {
    
  }
  base_ = base;
  // @@protoc_insertion_point(field_set_allocated:osi3.StationaryObject.base)
}

// .osi3.StationaryObject.Classification classification = 3;
inline bool StationaryObject::_internal_has_classification() const {
  return this != internal_default_instance() && classification_ != nullptr;
}
inline bool StationaryObject::has_classification() const {
  return _internal_has_classification();
}
inline void StationaryObject::clear_classification() {
  if (GetArena() == nullptr && classification_ != nullptr) {
    delete classification_;
  }
  classification_ = nullptr;
}
inline const ::osi3::StationaryObject_Classification& StationaryObject::_internal_classification() const {
  const ::osi3::StationaryObject_Classification* p = classification_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::StationaryObject_Classification&>(
      ::osi3::_StationaryObject_Classification_default_instance_);
}
inline const ::osi3::StationaryObject_Classification& StationaryObject::classification() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.classification)
  return _internal_classification();
}
inline void StationaryObject::unsafe_arena_set_allocated_classification(
    ::osi3::StationaryObject_Classification* classification) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(classification_);
  }
  classification_ = classification;
  if (classification) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.StationaryObject.classification)
}
inline ::osi3::StationaryObject_Classification* StationaryObject::release_classification() {
  
  ::osi3::StationaryObject_Classification* temp = classification_;
  classification_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::StationaryObject_Classification* StationaryObject::unsafe_arena_release_classification() {
  // @@protoc_insertion_point(field_release:osi3.StationaryObject.classification)
  
  ::osi3::StationaryObject_Classification* temp = classification_;
  classification_ = nullptr;
  return temp;
}
inline ::osi3::StationaryObject_Classification* StationaryObject::_internal_mutable_classification() {
  
  if (classification_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::StationaryObject_Classification>(GetArena());
    classification_ = p;
  }
  return classification_;
}
inline ::osi3::StationaryObject_Classification* StationaryObject::mutable_classification() {
  // @@protoc_insertion_point(field_mutable:osi3.StationaryObject.classification)
  return _internal_mutable_classification();
}
inline void StationaryObject::set_allocated_classification(::osi3::StationaryObject_Classification* classification) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete classification_;
  }
  if (classification) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(classification);
    if (message_arena != submessage_arena) {
      classification = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, classification, submessage_arena);
    }
    
  } else {
    
  }
  classification_ = classification;
  // @@protoc_insertion_point(field_set_allocated:osi3.StationaryObject.classification)
}

// string model_reference = 4;
inline void StationaryObject::clear_model_reference() {
  model_reference_.ClearToEmpty();
}
inline const std::string& StationaryObject::model_reference() const {
  // @@protoc_insertion_point(field_get:osi3.StationaryObject.model_reference)
  return _internal_model_reference();
}
inline void StationaryObject::set_model_reference(const std::string& value) {
  _internal_set_model_reference(value);
  // @@protoc_insertion_point(field_set:osi3.StationaryObject.model_reference)
}
inline std::string* StationaryObject::mutable_model_reference() {
  // @@protoc_insertion_point(field_mutable:osi3.StationaryObject.model_reference)
  return _internal_mutable_model_reference();
}
inline const std::string& StationaryObject::_internal_model_reference() const {
  return model_reference_.Get();
}
inline void StationaryObject::_internal_set_model_reference(const std::string& value) {
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void StationaryObject::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.StationaryObject.model_reference)
}
inline void StationaryObject::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.StationaryObject.model_reference)
}
inline void StationaryObject::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.StationaryObject.model_reference)
}
inline std::string* StationaryObject::_internal_mutable_model_reference() {
  
  return model_reference_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* StationaryObject::release_model_reference() {
  // @@protoc_insertion_point(field_release:osi3.StationaryObject.model_reference)
  return model_reference_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void StationaryObject::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.StationaryObject.model_reference)
}

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

// MovingObject_VehicleAttributes_WheelData

// uint32 axle = 1;
inline void MovingObject_VehicleAttributes_WheelData::clear_axle() {
  axle_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes_WheelData::_internal_axle() const {
  return axle_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes_WheelData::axle() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.axle)
  return _internal_axle();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_axle(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  axle_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_axle(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_axle(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.axle)
}

// uint32 index = 2;
inline void MovingObject_VehicleAttributes_WheelData::clear_index() {
  index_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes_WheelData::_internal_index() const {
  return index_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes_WheelData::index() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.index)
  return _internal_index();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  index_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_index(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_index(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.index)
}

// .osi3.Vector3d position = 3;
inline bool MovingObject_VehicleAttributes_WheelData::_internal_has_position() const {
  return this != internal_default_instance() && position_ != nullptr;
}
inline bool MovingObject_VehicleAttributes_WheelData::has_position() const {
  return _internal_has_position();
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes_WheelData::_internal_position() const {
  const ::osi3::Vector3d* p = position_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Vector3d&>(
      ::osi3::_Vector3d_default_instance_);
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes_WheelData::position() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.position)
  return _internal_position();
}
inline void MovingObject_VehicleAttributes_WheelData::unsafe_arena_set_allocated_position(
    ::osi3::Vector3d* position) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(position_);
  }
  position_ = position;
  if (position) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleAttributes.WheelData.position)
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes_WheelData::release_position() {
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes_WheelData::unsafe_arena_release_position() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.WheelData.position)
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes_WheelData::_internal_mutable_position() {
  
  if (position_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Vector3d>(GetArena());
    position_ = p;
  }
  return position_;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes_WheelData::mutable_position() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.WheelData.position)
  return _internal_mutable_position();
}
inline void MovingObject_VehicleAttributes_WheelData::set_allocated_position(::osi3::Vector3d* position) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(position_);
  }
  if (position) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(position)->GetArena();
    if (message_arena != submessage_arena) {
      position = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, position, submessage_arena);
    }
    
  } else {
    
  }
  position_ = position;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleAttributes.WheelData.position)
}

// double wheel_radius = 4;
inline void MovingObject_VehicleAttributes_WheelData::clear_wheel_radius() {
  wheel_radius_ = 0;
}
inline double MovingObject_VehicleAttributes_WheelData::_internal_wheel_radius() const {
  return wheel_radius_;
}
inline double MovingObject_VehicleAttributes_WheelData::wheel_radius() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.wheel_radius)
  return _internal_wheel_radius();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_wheel_radius(double value) {
  
  wheel_radius_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_wheel_radius(double value) {
  _internal_set_wheel_radius(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.wheel_radius)
}

// double rim_radius = 5;
inline void MovingObject_VehicleAttributes_WheelData::clear_rim_radius() {
  rim_radius_ = 0;
}
inline double MovingObject_VehicleAttributes_WheelData::_internal_rim_radius() const {
  return rim_radius_;
}
inline double MovingObject_VehicleAttributes_WheelData::rim_radius() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.rim_radius)
  return _internal_rim_radius();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_rim_radius(double value) {
  
  rim_radius_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_rim_radius(double value) {
  _internal_set_rim_radius(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.rim_radius)
}

// double width = 6;
inline void MovingObject_VehicleAttributes_WheelData::clear_width() {
  width_ = 0;
}
inline double MovingObject_VehicleAttributes_WheelData::_internal_width() const {
  return width_;
}
inline double MovingObject_VehicleAttributes_WheelData::width() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.width)
  return _internal_width();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_width(double value) {
  
  width_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_width(double value) {
  _internal_set_width(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.width)
}

// .osi3.Orientation3d orientation = 7;
inline bool MovingObject_VehicleAttributes_WheelData::_internal_has_orientation() const {
  return this != internal_default_instance() && orientation_ != nullptr;
}
inline bool MovingObject_VehicleAttributes_WheelData::has_orientation() const {
  return _internal_has_orientation();
}
inline const ::osi3::Orientation3d& MovingObject_VehicleAttributes_WheelData::_internal_orientation() const {
  const ::osi3::Orientation3d* p = orientation_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Orientation3d&>(
      ::osi3::_Orientation3d_default_instance_);
}
inline const ::osi3::Orientation3d& MovingObject_VehicleAttributes_WheelData::orientation() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.orientation)
  return _internal_orientation();
}
inline void MovingObject_VehicleAttributes_WheelData::unsafe_arena_set_allocated_orientation(
    ::osi3::Orientation3d* orientation) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(orientation_);
  }
  orientation_ = orientation;
  if (orientation) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleAttributes.WheelData.orientation)
}
inline ::osi3::Orientation3d* MovingObject_VehicleAttributes_WheelData::release_orientation() {
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Orientation3d* MovingObject_VehicleAttributes_WheelData::unsafe_arena_release_orientation() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.WheelData.orientation)
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  return temp;
}
inline ::osi3::Orientation3d* MovingObject_VehicleAttributes_WheelData::_internal_mutable_orientation() {
  
  if (orientation_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Orientation3d>(GetArena());
    orientation_ = p;
  }
  return orientation_;
}
inline ::osi3::Orientation3d* MovingObject_VehicleAttributes_WheelData::mutable_orientation() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.WheelData.orientation)
  return _internal_mutable_orientation();
}
inline void MovingObject_VehicleAttributes_WheelData::set_allocated_orientation(::osi3::Orientation3d* orientation) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(orientation_);
  }
  if (orientation) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(orientation)->GetArena();
    if (message_arena != submessage_arena) {
      orientation = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, orientation, submessage_arena);
    }
    
  } else {
    
  }
  orientation_ = orientation;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleAttributes.WheelData.orientation)
}

// double rotation_rate = 8;
inline void MovingObject_VehicleAttributes_WheelData::clear_rotation_rate() {
  rotation_rate_ = 0;
}
inline double MovingObject_VehicleAttributes_WheelData::_internal_rotation_rate() const {
  return rotation_rate_;
}
inline double MovingObject_VehicleAttributes_WheelData::rotation_rate() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.rotation_rate)
  return _internal_rotation_rate();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_rotation_rate(double value) {
  
  rotation_rate_ = value;
}
inline void MovingObject_VehicleAttributes_WheelData::set_rotation_rate(double value) {
  _internal_set_rotation_rate(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.rotation_rate)
}

// string model_reference = 9;
inline void MovingObject_VehicleAttributes_WheelData::clear_model_reference() {
  model_reference_.ClearToEmpty();
}
inline const std::string& MovingObject_VehicleAttributes_WheelData::model_reference() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.WheelData.model_reference)
  return _internal_model_reference();
}
inline void MovingObject_VehicleAttributes_WheelData::set_model_reference(const std::string& value) {
  _internal_set_model_reference(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.WheelData.model_reference)
}
inline std::string* MovingObject_VehicleAttributes_WheelData::mutable_model_reference() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.WheelData.model_reference)
  return _internal_mutable_model_reference();
}
inline const std::string& MovingObject_VehicleAttributes_WheelData::_internal_model_reference() const {
  return model_reference_.Get();
}
inline void MovingObject_VehicleAttributes_WheelData::_internal_set_model_reference(const std::string& value) {
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void MovingObject_VehicleAttributes_WheelData::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.MovingObject.VehicleAttributes.WheelData.model_reference)
}
inline void MovingObject_VehicleAttributes_WheelData::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.MovingObject.VehicleAttributes.WheelData.model_reference)
}
inline void MovingObject_VehicleAttributes_WheelData::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.MovingObject.VehicleAttributes.WheelData.model_reference)
}
inline std::string* MovingObject_VehicleAttributes_WheelData::_internal_mutable_model_reference() {
  
  return model_reference_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* MovingObject_VehicleAttributes_WheelData::release_model_reference() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.WheelData.model_reference)
  return model_reference_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void MovingObject_VehicleAttributes_WheelData::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.MovingObject.VehicleAttributes.WheelData.model_reference)
}

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

// MovingObject_VehicleAttributes

// .osi3.Identifier driver_id = 1;
inline bool MovingObject_VehicleAttributes::_internal_has_driver_id() const {
  return this != internal_default_instance() && driver_id_ != nullptr;
}
inline bool MovingObject_VehicleAttributes::has_driver_id() const {
  return _internal_has_driver_id();
}
inline const ::osi3::Identifier& MovingObject_VehicleAttributes::_internal_driver_id() const {
  const ::osi3::Identifier* p = driver_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& MovingObject_VehicleAttributes::driver_id() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.driver_id)
  return _internal_driver_id();
}
inline void MovingObject_VehicleAttributes::unsafe_arena_set_allocated_driver_id(
    ::osi3::Identifier* driver_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(driver_id_);
  }
  driver_id_ = driver_id;
  if (driver_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleAttributes.driver_id)
}
inline ::osi3::Identifier* MovingObject_VehicleAttributes::release_driver_id() {
  
  ::osi3::Identifier* temp = driver_id_;
  driver_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* MovingObject_VehicleAttributes::unsafe_arena_release_driver_id() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.driver_id)
  
  ::osi3::Identifier* temp = driver_id_;
  driver_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* MovingObject_VehicleAttributes::_internal_mutable_driver_id() {
  
  if (driver_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    driver_id_ = p;
  }
  return driver_id_;
}
inline ::osi3::Identifier* MovingObject_VehicleAttributes::mutable_driver_id() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.driver_id)
  return _internal_mutable_driver_id();
}
inline void MovingObject_VehicleAttributes::set_allocated_driver_id(::osi3::Identifier* driver_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(driver_id_);
  }
  if (driver_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(driver_id)->GetArena();
    if (message_arena != submessage_arena) {
      driver_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, driver_id, submessage_arena);
    }
    
  } else {
    
  }
  driver_id_ = driver_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleAttributes.driver_id)
}

// double radius_wheel = 2;
inline void MovingObject_VehicleAttributes::clear_radius_wheel() {
  radius_wheel_ = 0;
}
inline double MovingObject_VehicleAttributes::_internal_radius_wheel() const {
  return radius_wheel_;
}
inline double MovingObject_VehicleAttributes::radius_wheel() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.radius_wheel)
  return _internal_radius_wheel();
}
inline void MovingObject_VehicleAttributes::_internal_set_radius_wheel(double value) {
  
  radius_wheel_ = value;
}
inline void MovingObject_VehicleAttributes::set_radius_wheel(double value) {
  _internal_set_radius_wheel(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.radius_wheel)
}

// uint32 number_wheels = 3;
inline void MovingObject_VehicleAttributes::clear_number_wheels() {
  number_wheels_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes::_internal_number_wheels() const {
  return number_wheels_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 MovingObject_VehicleAttributes::number_wheels() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.number_wheels)
  return _internal_number_wheels();
}
inline void MovingObject_VehicleAttributes::_internal_set_number_wheels(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  number_wheels_ = value;
}
inline void MovingObject_VehicleAttributes::set_number_wheels(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_number_wheels(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.number_wheels)
}

// .osi3.Vector3d bbcenter_to_rear = 4;
inline bool MovingObject_VehicleAttributes::_internal_has_bbcenter_to_rear() const {
  return this != internal_default_instance() && bbcenter_to_rear_ != nullptr;
}
inline bool MovingObject_VehicleAttributes::has_bbcenter_to_rear() const {
  return _internal_has_bbcenter_to_rear();
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes::_internal_bbcenter_to_rear() const {
  const ::osi3::Vector3d* p = bbcenter_to_rear_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Vector3d&>(
      ::osi3::_Vector3d_default_instance_);
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes::bbcenter_to_rear() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.bbcenter_to_rear)
  return _internal_bbcenter_to_rear();
}
inline void MovingObject_VehicleAttributes::unsafe_arena_set_allocated_bbcenter_to_rear(
    ::osi3::Vector3d* bbcenter_to_rear) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_rear_);
  }
  bbcenter_to_rear_ = bbcenter_to_rear;
  if (bbcenter_to_rear) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleAttributes.bbcenter_to_rear)
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::release_bbcenter_to_rear() {
  
  ::osi3::Vector3d* temp = bbcenter_to_rear_;
  bbcenter_to_rear_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::unsafe_arena_release_bbcenter_to_rear() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.bbcenter_to_rear)
  
  ::osi3::Vector3d* temp = bbcenter_to_rear_;
  bbcenter_to_rear_ = nullptr;
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::_internal_mutable_bbcenter_to_rear() {
  
  if (bbcenter_to_rear_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Vector3d>(GetArena());
    bbcenter_to_rear_ = p;
  }
  return bbcenter_to_rear_;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::mutable_bbcenter_to_rear() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.bbcenter_to_rear)
  return _internal_mutable_bbcenter_to_rear();
}
inline void MovingObject_VehicleAttributes::set_allocated_bbcenter_to_rear(::osi3::Vector3d* bbcenter_to_rear) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_rear_);
  }
  if (bbcenter_to_rear) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_rear)->GetArena();
    if (message_arena != submessage_arena) {
      bbcenter_to_rear = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bbcenter_to_rear, submessage_arena);
    }
    
  } else {
    
  }
  bbcenter_to_rear_ = bbcenter_to_rear;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleAttributes.bbcenter_to_rear)
}

// .osi3.Vector3d bbcenter_to_front = 5;
inline bool MovingObject_VehicleAttributes::_internal_has_bbcenter_to_front() const {
  return this != internal_default_instance() && bbcenter_to_front_ != nullptr;
}
inline bool MovingObject_VehicleAttributes::has_bbcenter_to_front() const {
  return _internal_has_bbcenter_to_front();
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes::_internal_bbcenter_to_front() const {
  const ::osi3::Vector3d* p = bbcenter_to_front_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Vector3d&>(
      ::osi3::_Vector3d_default_instance_);
}
inline const ::osi3::Vector3d& MovingObject_VehicleAttributes::bbcenter_to_front() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.bbcenter_to_front)
  return _internal_bbcenter_to_front();
}
inline void MovingObject_VehicleAttributes::unsafe_arena_set_allocated_bbcenter_to_front(
    ::osi3::Vector3d* bbcenter_to_front) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_front_);
  }
  bbcenter_to_front_ = bbcenter_to_front;
  if (bbcenter_to_front) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleAttributes.bbcenter_to_front)
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::release_bbcenter_to_front() {
  
  ::osi3::Vector3d* temp = bbcenter_to_front_;
  bbcenter_to_front_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::unsafe_arena_release_bbcenter_to_front() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleAttributes.bbcenter_to_front)
  
  ::osi3::Vector3d* temp = bbcenter_to_front_;
  bbcenter_to_front_ = nullptr;
  return temp;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::_internal_mutable_bbcenter_to_front() {
  
  if (bbcenter_to_front_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Vector3d>(GetArena());
    bbcenter_to_front_ = p;
  }
  return bbcenter_to_front_;
}
inline ::osi3::Vector3d* MovingObject_VehicleAttributes::mutable_bbcenter_to_front() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.bbcenter_to_front)
  return _internal_mutable_bbcenter_to_front();
}
inline void MovingObject_VehicleAttributes::set_allocated_bbcenter_to_front(::osi3::Vector3d* bbcenter_to_front) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_front_);
  }
  if (bbcenter_to_front) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(bbcenter_to_front)->GetArena();
    if (message_arena != submessage_arena) {
      bbcenter_to_front = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, bbcenter_to_front, submessage_arena);
    }
    
  } else {
    
  }
  bbcenter_to_front_ = bbcenter_to_front;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleAttributes.bbcenter_to_front)
}

// double ground_clearance = 6;
inline void MovingObject_VehicleAttributes::clear_ground_clearance() {
  ground_clearance_ = 0;
}
inline double MovingObject_VehicleAttributes::_internal_ground_clearance() const {
  return ground_clearance_;
}
inline double MovingObject_VehicleAttributes::ground_clearance() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.ground_clearance)
  return _internal_ground_clearance();
}
inline void MovingObject_VehicleAttributes::_internal_set_ground_clearance(double value) {
  
  ground_clearance_ = value;
}
inline void MovingObject_VehicleAttributes::set_ground_clearance(double value) {
  _internal_set_ground_clearance(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.ground_clearance)
}

// repeated .osi3.MovingObject.VehicleAttributes.WheelData wheel_data = 7;
inline int MovingObject_VehicleAttributes::_internal_wheel_data_size() const {
  return wheel_data_.size();
}
inline int MovingObject_VehicleAttributes::wheel_data_size() const {
  return _internal_wheel_data_size();
}
inline void MovingObject_VehicleAttributes::clear_wheel_data() {
  wheel_data_.Clear();
}
inline ::osi3::MovingObject_VehicleAttributes_WheelData* MovingObject_VehicleAttributes::mutable_wheel_data(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleAttributes.wheel_data)
  return wheel_data_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject_VehicleAttributes_WheelData >*
MovingObject_VehicleAttributes::mutable_wheel_data() {
  // @@protoc_insertion_point(field_mutable_list:osi3.MovingObject.VehicleAttributes.wheel_data)
  return &wheel_data_;
}
inline const ::osi3::MovingObject_VehicleAttributes_WheelData& MovingObject_VehicleAttributes::_internal_wheel_data(int index) const {
  return wheel_data_.Get(index);
}
inline const ::osi3::MovingObject_VehicleAttributes_WheelData& MovingObject_VehicleAttributes::wheel_data(int index) const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.wheel_data)
  return _internal_wheel_data(index);
}
inline ::osi3::MovingObject_VehicleAttributes_WheelData* MovingObject_VehicleAttributes::_internal_add_wheel_data() {
  return wheel_data_.Add();
}
inline ::osi3::MovingObject_VehicleAttributes_WheelData* MovingObject_VehicleAttributes::add_wheel_data() {
  // @@protoc_insertion_point(field_add:osi3.MovingObject.VehicleAttributes.wheel_data)
  return _internal_add_wheel_data();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::MovingObject_VehicleAttributes_WheelData >&
MovingObject_VehicleAttributes::wheel_data() const {
  // @@protoc_insertion_point(field_list:osi3.MovingObject.VehicleAttributes.wheel_data)
  return wheel_data_;
}

// double steering_wheel_angle = 8;
inline void MovingObject_VehicleAttributes::clear_steering_wheel_angle() {
  steering_wheel_angle_ = 0;
}
inline double MovingObject_VehicleAttributes::_internal_steering_wheel_angle() const {
  return steering_wheel_angle_;
}
inline double MovingObject_VehicleAttributes::steering_wheel_angle() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleAttributes.steering_wheel_angle)
  return _internal_steering_wheel_angle();
}
inline void MovingObject_VehicleAttributes::_internal_set_steering_wheel_angle(double value) {
  
  steering_wheel_angle_ = value;
}
inline void MovingObject_VehicleAttributes::set_steering_wheel_angle(double value) {
  _internal_set_steering_wheel_angle(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleAttributes.steering_wheel_angle)
}

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

// MovingObject_MovingObjectClassification

// repeated .osi3.Identifier assigned_lane_id = 1;
inline int MovingObject_MovingObjectClassification::_internal_assigned_lane_id_size() const {
  return assigned_lane_id_.size();
}
inline int MovingObject_MovingObjectClassification::assigned_lane_id_size() const {
  return _internal_assigned_lane_id_size();
}
inline ::osi3::Identifier* MovingObject_MovingObjectClassification::mutable_assigned_lane_id(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.MovingObjectClassification.assigned_lane_id)
  return assigned_lane_id_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
MovingObject_MovingObjectClassification::mutable_assigned_lane_id() {
  // @@protoc_insertion_point(field_mutable_list:osi3.MovingObject.MovingObjectClassification.assigned_lane_id)
  return &assigned_lane_id_;
}
inline const ::osi3::Identifier& MovingObject_MovingObjectClassification::_internal_assigned_lane_id(int index) const {
  return assigned_lane_id_.Get(index);
}
inline const ::osi3::Identifier& MovingObject_MovingObjectClassification::assigned_lane_id(int index) const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.MovingObjectClassification.assigned_lane_id)
  return _internal_assigned_lane_id(index);
}
inline ::osi3::Identifier* MovingObject_MovingObjectClassification::_internal_add_assigned_lane_id() {
  return assigned_lane_id_.Add();
}
inline ::osi3::Identifier* MovingObject_MovingObjectClassification::add_assigned_lane_id() {
  // @@protoc_insertion_point(field_add:osi3.MovingObject.MovingObjectClassification.assigned_lane_id)
  return _internal_add_assigned_lane_id();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
MovingObject_MovingObjectClassification::assigned_lane_id() const {
  // @@protoc_insertion_point(field_list:osi3.MovingObject.MovingObjectClassification.assigned_lane_id)
  return assigned_lane_id_;
}

// repeated double assigned_lane_percentage = 2;
inline int MovingObject_MovingObjectClassification::_internal_assigned_lane_percentage_size() const {
  return assigned_lane_percentage_.size();
}
inline int MovingObject_MovingObjectClassification::assigned_lane_percentage_size() const {
  return _internal_assigned_lane_percentage_size();
}
inline void MovingObject_MovingObjectClassification::clear_assigned_lane_percentage() {
  assigned_lane_percentage_.Clear();
}
inline double MovingObject_MovingObjectClassification::_internal_assigned_lane_percentage(int index) const {
  return assigned_lane_percentage_.Get(index);
}
inline double MovingObject_MovingObjectClassification::assigned_lane_percentage(int index) const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.MovingObjectClassification.assigned_lane_percentage)
  return _internal_assigned_lane_percentage(index);
}
inline void MovingObject_MovingObjectClassification::set_assigned_lane_percentage(int index, double value) {
  assigned_lane_percentage_.Set(index, value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.MovingObjectClassification.assigned_lane_percentage)
}
inline void MovingObject_MovingObjectClassification::_internal_add_assigned_lane_percentage(double value) {
  assigned_lane_percentage_.Add(value);
}
inline void MovingObject_MovingObjectClassification::add_assigned_lane_percentage(double value) {
  _internal_add_assigned_lane_percentage(value);
  // @@protoc_insertion_point(field_add:osi3.MovingObject.MovingObjectClassification.assigned_lane_percentage)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
MovingObject_MovingObjectClassification::_internal_assigned_lane_percentage() const {
  return assigned_lane_percentage_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >&
MovingObject_MovingObjectClassification::assigned_lane_percentage() const {
  // @@protoc_insertion_point(field_list:osi3.MovingObject.MovingObjectClassification.assigned_lane_percentage)
  return _internal_assigned_lane_percentage();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
MovingObject_MovingObjectClassification::_internal_mutable_assigned_lane_percentage() {
  return &assigned_lane_percentage_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< double >*
MovingObject_MovingObjectClassification::mutable_assigned_lane_percentage() {
  // @@protoc_insertion_point(field_mutable_list:osi3.MovingObject.MovingObjectClassification.assigned_lane_percentage)
  return _internal_mutable_assigned_lane_percentage();
}

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

// MovingObject_VehicleClassification_LightState

// .osi3.MovingObject.VehicleClassification.LightState.IndicatorState indicator_state = 1;
inline void MovingObject_VehicleClassification_LightState::clear_indicator_state() {
  indicator_state_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState MovingObject_VehicleClassification_LightState::_internal_indicator_state() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState >(indicator_state_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState MovingObject_VehicleClassification_LightState::indicator_state() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.indicator_state)
  return _internal_indicator_state();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_indicator_state(::osi3::MovingObject_VehicleClassification_LightState_IndicatorState value) {
  
  indicator_state_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_indicator_state(::osi3::MovingObject_VehicleClassification_LightState_IndicatorState value) {
  _internal_set_indicator_state(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.indicator_state)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState front_fog_light = 2;
inline void MovingObject_VehicleClassification_LightState::clear_front_fog_light() {
  front_fog_light_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_front_fog_light() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(front_fog_light_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::front_fog_light() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.front_fog_light)
  return _internal_front_fog_light();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_front_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  front_fog_light_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_front_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_front_fog_light(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.front_fog_light)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState rear_fog_light = 3;
inline void MovingObject_VehicleClassification_LightState::clear_rear_fog_light() {
  rear_fog_light_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_rear_fog_light() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(rear_fog_light_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::rear_fog_light() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.rear_fog_light)
  return _internal_rear_fog_light();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_rear_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  rear_fog_light_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_rear_fog_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_rear_fog_light(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.rear_fog_light)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState head_light = 4;
inline void MovingObject_VehicleClassification_LightState::clear_head_light() {
  head_light_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_head_light() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(head_light_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::head_light() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.head_light)
  return _internal_head_light();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_head_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  head_light_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_head_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_head_light(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.head_light)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState high_beam = 5;
inline void MovingObject_VehicleClassification_LightState::clear_high_beam() {
  high_beam_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_high_beam() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(high_beam_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::high_beam() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.high_beam)
  return _internal_high_beam();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_high_beam(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  high_beam_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_high_beam(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_high_beam(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.high_beam)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState reversing_light = 6;
inline void MovingObject_VehicleClassification_LightState::clear_reversing_light() {
  reversing_light_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_reversing_light() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(reversing_light_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::reversing_light() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.reversing_light)
  return _internal_reversing_light();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_reversing_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  reversing_light_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_reversing_light(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_reversing_light(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.reversing_light)
}

// .osi3.MovingObject.VehicleClassification.LightState.BrakeLightState brake_light_state = 7;
inline void MovingObject_VehicleClassification_LightState::clear_brake_light_state() {
  brake_light_state_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState MovingObject_VehicleClassification_LightState::_internal_brake_light_state() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState >(brake_light_state_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState MovingObject_VehicleClassification_LightState::brake_light_state() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.brake_light_state)
  return _internal_brake_light_state();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_brake_light_state(::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState value) {
  
  brake_light_state_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_brake_light_state(::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState value) {
  _internal_set_brake_light_state(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.brake_light_state)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState license_plate_illumination_rear = 8;
inline void MovingObject_VehicleClassification_LightState::clear_license_plate_illumination_rear() {
  license_plate_illumination_rear_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_license_plate_illumination_rear() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(license_plate_illumination_rear_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::license_plate_illumination_rear() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.license_plate_illumination_rear)
  return _internal_license_plate_illumination_rear();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_license_plate_illumination_rear(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  license_plate_illumination_rear_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_license_plate_illumination_rear(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_license_plate_illumination_rear(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.license_plate_illumination_rear)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState emergency_vehicle_illumination = 9;
inline void MovingObject_VehicleClassification_LightState::clear_emergency_vehicle_illumination() {
  emergency_vehicle_illumination_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_emergency_vehicle_illumination() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(emergency_vehicle_illumination_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::emergency_vehicle_illumination() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.emergency_vehicle_illumination)
  return _internal_emergency_vehicle_illumination();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_emergency_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  emergency_vehicle_illumination_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_emergency_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_emergency_vehicle_illumination(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.emergency_vehicle_illumination)
}

// .osi3.MovingObject.VehicleClassification.LightState.GenericLightState service_vehicle_illumination = 10;
inline void MovingObject_VehicleClassification_LightState::clear_service_vehicle_illumination() {
  service_vehicle_illumination_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::_internal_service_vehicle_illumination() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState >(service_vehicle_illumination_);
}
inline ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState MovingObject_VehicleClassification_LightState::service_vehicle_illumination() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.LightState.service_vehicle_illumination)
  return _internal_service_vehicle_illumination();
}
inline void MovingObject_VehicleClassification_LightState::_internal_set_service_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  
  service_vehicle_illumination_ = value;
}
inline void MovingObject_VehicleClassification_LightState::set_service_vehicle_illumination(::osi3::MovingObject_VehicleClassification_LightState_GenericLightState value) {
  _internal_set_service_vehicle_illumination(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.LightState.service_vehicle_illumination)
}

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

// MovingObject_VehicleClassification

// .osi3.MovingObject.VehicleClassification.Type type = 1;
inline void MovingObject_VehicleClassification::clear_type() {
  type_ = 0;
}
inline ::osi3::MovingObject_VehicleClassification_Type MovingObject_VehicleClassification::_internal_type() const {
  return static_cast< ::osi3::MovingObject_VehicleClassification_Type >(type_);
}
inline ::osi3::MovingObject_VehicleClassification_Type MovingObject_VehicleClassification::type() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.type)
  return _internal_type();
}
inline void MovingObject_VehicleClassification::_internal_set_type(::osi3::MovingObject_VehicleClassification_Type value) {
  
  type_ = value;
}
inline void MovingObject_VehicleClassification::set_type(::osi3::MovingObject_VehicleClassification_Type value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.type)
}

// .osi3.MovingObject.VehicleClassification.LightState light_state = 2;
inline bool MovingObject_VehicleClassification::_internal_has_light_state() const {
  return this != internal_default_instance() && light_state_ != nullptr;
}
inline bool MovingObject_VehicleClassification::has_light_state() const {
  return _internal_has_light_state();
}
inline void MovingObject_VehicleClassification::clear_light_state() {
  if (GetArena() == nullptr && light_state_ != nullptr) {
    delete light_state_;
  }
  light_state_ = nullptr;
}
inline const ::osi3::MovingObject_VehicleClassification_LightState& MovingObject_VehicleClassification::_internal_light_state() const {
  const ::osi3::MovingObject_VehicleClassification_LightState* p = light_state_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::MovingObject_VehicleClassification_LightState&>(
      ::osi3::_MovingObject_VehicleClassification_LightState_default_instance_);
}
inline const ::osi3::MovingObject_VehicleClassification_LightState& MovingObject_VehicleClassification::light_state() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.light_state)
  return _internal_light_state();
}
inline void MovingObject_VehicleClassification::unsafe_arena_set_allocated_light_state(
    ::osi3::MovingObject_VehicleClassification_LightState* light_state) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(light_state_);
  }
  light_state_ = light_state;
  if (light_state) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleClassification.light_state)
}
inline ::osi3::MovingObject_VehicleClassification_LightState* MovingObject_VehicleClassification::release_light_state() {
  
  ::osi3::MovingObject_VehicleClassification_LightState* temp = light_state_;
  light_state_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::MovingObject_VehicleClassification_LightState* MovingObject_VehicleClassification::unsafe_arena_release_light_state() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleClassification.light_state)
  
  ::osi3::MovingObject_VehicleClassification_LightState* temp = light_state_;
  light_state_ = nullptr;
  return temp;
}
inline ::osi3::MovingObject_VehicleClassification_LightState* MovingObject_VehicleClassification::_internal_mutable_light_state() {
  
  if (light_state_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::MovingObject_VehicleClassification_LightState>(GetArena());
    light_state_ = p;
  }
  return light_state_;
}
inline ::osi3::MovingObject_VehicleClassification_LightState* MovingObject_VehicleClassification::mutable_light_state() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleClassification.light_state)
  return _internal_mutable_light_state();
}
inline void MovingObject_VehicleClassification::set_allocated_light_state(::osi3::MovingObject_VehicleClassification_LightState* light_state) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete light_state_;
  }
  if (light_state) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(light_state);
    if (message_arena != submessage_arena) {
      light_state = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, light_state, submessage_arena);
    }
    
  } else {
    
  }
  light_state_ = light_state;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleClassification.light_state)
}

// bool has_trailer = 3;
inline void MovingObject_VehicleClassification::clear_has_trailer() {
  has_trailer_ = false;
}
inline bool MovingObject_VehicleClassification::_internal_has_trailer() const {
  return has_trailer_;
}
inline bool MovingObject_VehicleClassification::has_trailer() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.has_trailer)
  return _internal_has_trailer();
}
inline void MovingObject_VehicleClassification::_internal_set_has_trailer(bool value) {
  
  has_trailer_ = value;
}
inline void MovingObject_VehicleClassification::set_has_trailer(bool value) {
  _internal_set_has_trailer(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.VehicleClassification.has_trailer)
}

// .osi3.Identifier trailer_id = 4;
inline bool MovingObject_VehicleClassification::_internal_has_trailer_id() const {
  return this != internal_default_instance() && trailer_id_ != nullptr;
}
inline bool MovingObject_VehicleClassification::has_trailer_id() const {
  return _internal_has_trailer_id();
}
inline const ::osi3::Identifier& MovingObject_VehicleClassification::_internal_trailer_id() const {
  const ::osi3::Identifier* p = trailer_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& MovingObject_VehicleClassification::trailer_id() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.VehicleClassification.trailer_id)
  return _internal_trailer_id();
}
inline void MovingObject_VehicleClassification::unsafe_arena_set_allocated_trailer_id(
    ::osi3::Identifier* trailer_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(trailer_id_);
  }
  trailer_id_ = trailer_id;
  if (trailer_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.VehicleClassification.trailer_id)
}
inline ::osi3::Identifier* MovingObject_VehicleClassification::release_trailer_id() {
  
  ::osi3::Identifier* temp = trailer_id_;
  trailer_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* MovingObject_VehicleClassification::unsafe_arena_release_trailer_id() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.VehicleClassification.trailer_id)
  
  ::osi3::Identifier* temp = trailer_id_;
  trailer_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* MovingObject_VehicleClassification::_internal_mutable_trailer_id() {
  
  if (trailer_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    trailer_id_ = p;
  }
  return trailer_id_;
}
inline ::osi3::Identifier* MovingObject_VehicleClassification::mutable_trailer_id() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.VehicleClassification.trailer_id)
  return _internal_mutable_trailer_id();
}
inline void MovingObject_VehicleClassification::set_allocated_trailer_id(::osi3::Identifier* trailer_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(trailer_id_);
  }
  if (trailer_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(trailer_id)->GetArena();
    if (message_arena != submessage_arena) {
      trailer_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, trailer_id, submessage_arena);
    }
    
  } else {
    
  }
  trailer_id_ = trailer_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.VehicleClassification.trailer_id)
}

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

// MovingObject

// .osi3.Identifier id = 1;
inline bool MovingObject::_internal_has_id() const {
  return this != internal_default_instance() && id_ != nullptr;
}
inline bool MovingObject::has_id() const {
  return _internal_has_id();
}
inline const ::osi3::Identifier& MovingObject::_internal_id() const {
  const ::osi3::Identifier* p = id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& MovingObject::id() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.id)
  return _internal_id();
}
inline void MovingObject::unsafe_arena_set_allocated_id(
    ::osi3::Identifier* id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(id_);
  }
  id_ = id;
  if (id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.id)
}
inline ::osi3::Identifier* MovingObject::release_id() {
  
  ::osi3::Identifier* temp = id_;
  id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* MovingObject::unsafe_arena_release_id() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.id)
  
  ::osi3::Identifier* temp = id_;
  id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* MovingObject::_internal_mutable_id() {
  
  if (id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    id_ = p;
  }
  return id_;
}
inline ::osi3::Identifier* MovingObject::mutable_id() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.id)
  return _internal_mutable_id();
}
inline void MovingObject::set_allocated_id(::osi3::Identifier* id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(id_);
  }
  if (id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(id)->GetArena();
    if (message_arena != submessage_arena) {
      id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, id, submessage_arena);
    }
    
  } else {
    
  }
  id_ = id;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.id)
}

// .osi3.BaseMoving base = 2;
inline bool MovingObject::_internal_has_base() const {
  return this != internal_default_instance() && base_ != nullptr;
}
inline bool MovingObject::has_base() const {
  return _internal_has_base();
}
inline const ::osi3::BaseMoving& MovingObject::_internal_base() const {
  const ::osi3::BaseMoving* p = base_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::BaseMoving&>(
      ::osi3::_BaseMoving_default_instance_);
}
inline const ::osi3::BaseMoving& MovingObject::base() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.base)
  return _internal_base();
}
inline void MovingObject::unsafe_arena_set_allocated_base(
    ::osi3::BaseMoving* base) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_);
  }
  base_ = base;
  if (base) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.base)
}
inline ::osi3::BaseMoving* MovingObject::release_base() {
  
  ::osi3::BaseMoving* temp = base_;
  base_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::BaseMoving* MovingObject::unsafe_arena_release_base() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.base)
  
  ::osi3::BaseMoving* temp = base_;
  base_ = nullptr;
  return temp;
}
inline ::osi3::BaseMoving* MovingObject::_internal_mutable_base() {
  
  if (base_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::BaseMoving>(GetArena());
    base_ = p;
  }
  return base_;
}
inline ::osi3::BaseMoving* MovingObject::mutable_base() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.base)
  return _internal_mutable_base();
}
inline void MovingObject::set_allocated_base(::osi3::BaseMoving* base) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(base_);
  }
  if (base) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(base)->GetArena();
    if (message_arena != submessage_arena) {
      base = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, base, submessage_arena);
    }
    
  } else {
    
  }
  base_ = base;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.base)
}

// .osi3.MovingObject.Type type = 3;
inline void MovingObject::clear_type() {
  type_ = 0;
}
inline ::osi3::MovingObject_Type MovingObject::_internal_type() const {
  return static_cast< ::osi3::MovingObject_Type >(type_);
}
inline ::osi3::MovingObject_Type MovingObject::type() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.type)
  return _internal_type();
}
inline void MovingObject::_internal_set_type(::osi3::MovingObject_Type value) {
  
  type_ = value;
}
inline void MovingObject::set_type(::osi3::MovingObject_Type value) {
  _internal_set_type(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.type)
}

// repeated .osi3.Identifier assigned_lane_id = 4;
inline int MovingObject::_internal_assigned_lane_id_size() const {
  return assigned_lane_id_.size();
}
inline int MovingObject::assigned_lane_id_size() const {
  return _internal_assigned_lane_id_size();
}
inline ::osi3::Identifier* MovingObject::mutable_assigned_lane_id(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.assigned_lane_id)
  return assigned_lane_id_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
MovingObject::mutable_assigned_lane_id() {
  // @@protoc_insertion_point(field_mutable_list:osi3.MovingObject.assigned_lane_id)
  return &assigned_lane_id_;
}
inline const ::osi3::Identifier& MovingObject::_internal_assigned_lane_id(int index) const {
  return assigned_lane_id_.Get(index);
}
inline const ::osi3::Identifier& MovingObject::assigned_lane_id(int index) const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.assigned_lane_id)
  return _internal_assigned_lane_id(index);
}
inline ::osi3::Identifier* MovingObject::_internal_add_assigned_lane_id() {
  return assigned_lane_id_.Add();
}
inline ::osi3::Identifier* MovingObject::add_assigned_lane_id() {
  // @@protoc_insertion_point(field_add:osi3.MovingObject.assigned_lane_id)
  return _internal_add_assigned_lane_id();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
MovingObject::assigned_lane_id() const {
  // @@protoc_insertion_point(field_list:osi3.MovingObject.assigned_lane_id)
  return assigned_lane_id_;
}

// .osi3.MovingObject.VehicleAttributes vehicle_attributes = 5;
inline bool MovingObject::_internal_has_vehicle_attributes() const {
  return this != internal_default_instance() && vehicle_attributes_ != nullptr;
}
inline bool MovingObject::has_vehicle_attributes() const {
  return _internal_has_vehicle_attributes();
}
inline void MovingObject::clear_vehicle_attributes() {
  if (GetArena() == nullptr && vehicle_attributes_ != nullptr) {
    delete vehicle_attributes_;
  }
  vehicle_attributes_ = nullptr;
}
inline const ::osi3::MovingObject_VehicleAttributes& MovingObject::_internal_vehicle_attributes() const {
  const ::osi3::MovingObject_VehicleAttributes* p = vehicle_attributes_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::MovingObject_VehicleAttributes&>(
      ::osi3::_MovingObject_VehicleAttributes_default_instance_);
}
inline const ::osi3::MovingObject_VehicleAttributes& MovingObject::vehicle_attributes() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.vehicle_attributes)
  return _internal_vehicle_attributes();
}
inline void MovingObject::unsafe_arena_set_allocated_vehicle_attributes(
    ::osi3::MovingObject_VehicleAttributes* vehicle_attributes) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(vehicle_attributes_);
  }
  vehicle_attributes_ = vehicle_attributes;
  if (vehicle_attributes) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.vehicle_attributes)
}
inline ::osi3::MovingObject_VehicleAttributes* MovingObject::release_vehicle_attributes() {
  
  ::osi3::MovingObject_VehicleAttributes* temp = vehicle_attributes_;
  vehicle_attributes_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::MovingObject_VehicleAttributes* MovingObject::unsafe_arena_release_vehicle_attributes() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.vehicle_attributes)
  
  ::osi3::MovingObject_VehicleAttributes* temp = vehicle_attributes_;
  vehicle_attributes_ = nullptr;
  return temp;
}
inline ::osi3::MovingObject_VehicleAttributes* MovingObject::_internal_mutable_vehicle_attributes() {
  
  if (vehicle_attributes_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::MovingObject_VehicleAttributes>(GetArena());
    vehicle_attributes_ = p;
  }
  return vehicle_attributes_;
}
inline ::osi3::MovingObject_VehicleAttributes* MovingObject::mutable_vehicle_attributes() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.vehicle_attributes)
  return _internal_mutable_vehicle_attributes();
}
inline void MovingObject::set_allocated_vehicle_attributes(::osi3::MovingObject_VehicleAttributes* vehicle_attributes) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete vehicle_attributes_;
  }
  if (vehicle_attributes) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(vehicle_attributes);
    if (message_arena != submessage_arena) {
      vehicle_attributes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, vehicle_attributes, submessage_arena);
    }
    
  } else {
    
  }
  vehicle_attributes_ = vehicle_attributes;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.vehicle_attributes)
}

// .osi3.MovingObject.VehicleClassification vehicle_classification = 6;
inline bool MovingObject::_internal_has_vehicle_classification() const {
  return this != internal_default_instance() && vehicle_classification_ != nullptr;
}
inline bool MovingObject::has_vehicle_classification() const {
  return _internal_has_vehicle_classification();
}
inline void MovingObject::clear_vehicle_classification() {
  if (GetArena() == nullptr && vehicle_classification_ != nullptr) {
    delete vehicle_classification_;
  }
  vehicle_classification_ = nullptr;
}
inline const ::osi3::MovingObject_VehicleClassification& MovingObject::_internal_vehicle_classification() const {
  const ::osi3::MovingObject_VehicleClassification* p = vehicle_classification_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::MovingObject_VehicleClassification&>(
      ::osi3::_MovingObject_VehicleClassification_default_instance_);
}
inline const ::osi3::MovingObject_VehicleClassification& MovingObject::vehicle_classification() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.vehicle_classification)
  return _internal_vehicle_classification();
}
inline void MovingObject::unsafe_arena_set_allocated_vehicle_classification(
    ::osi3::MovingObject_VehicleClassification* vehicle_classification) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(vehicle_classification_);
  }
  vehicle_classification_ = vehicle_classification;
  if (vehicle_classification) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.vehicle_classification)
}
inline ::osi3::MovingObject_VehicleClassification* MovingObject::release_vehicle_classification() {
  
  ::osi3::MovingObject_VehicleClassification* temp = vehicle_classification_;
  vehicle_classification_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::MovingObject_VehicleClassification* MovingObject::unsafe_arena_release_vehicle_classification() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.vehicle_classification)
  
  ::osi3::MovingObject_VehicleClassification* temp = vehicle_classification_;
  vehicle_classification_ = nullptr;
  return temp;
}
inline ::osi3::MovingObject_VehicleClassification* MovingObject::_internal_mutable_vehicle_classification() {
  
  if (vehicle_classification_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::MovingObject_VehicleClassification>(GetArena());
    vehicle_classification_ = p;
  }
  return vehicle_classification_;
}
inline ::osi3::MovingObject_VehicleClassification* MovingObject::mutable_vehicle_classification() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.vehicle_classification)
  return _internal_mutable_vehicle_classification();
}
inline void MovingObject::set_allocated_vehicle_classification(::osi3::MovingObject_VehicleClassification* vehicle_classification) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete vehicle_classification_;
  }
  if (vehicle_classification) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(vehicle_classification);
    if (message_arena != submessage_arena) {
      vehicle_classification = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, vehicle_classification, submessage_arena);
    }
    
  } else {
    
  }
  vehicle_classification_ = vehicle_classification;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.vehicle_classification)
}

// string model_reference = 7;
inline void MovingObject::clear_model_reference() {
  model_reference_.ClearToEmpty();
}
inline const std::string& MovingObject::model_reference() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.model_reference)
  return _internal_model_reference();
}
inline void MovingObject::set_model_reference(const std::string& value) {
  _internal_set_model_reference(value);
  // @@protoc_insertion_point(field_set:osi3.MovingObject.model_reference)
}
inline std::string* MovingObject::mutable_model_reference() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.model_reference)
  return _internal_mutable_model_reference();
}
inline const std::string& MovingObject::_internal_model_reference() const {
  return model_reference_.Get();
}
inline void MovingObject::_internal_set_model_reference(const std::string& value) {
  
  model_reference_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void MovingObject::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.MovingObject.model_reference)
}
inline void MovingObject::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.MovingObject.model_reference)
}
inline void MovingObject::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.MovingObject.model_reference)
}
inline std::string* MovingObject::_internal_mutable_model_reference() {
  
  return model_reference_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* MovingObject::release_model_reference() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.model_reference)
  return model_reference_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void MovingObject::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.MovingObject.model_reference)
}

// repeated .osi3.StatePoint future_trajectory = 8;
inline int MovingObject::_internal_future_trajectory_size() const {
  return future_trajectory_.size();
}
inline int MovingObject::future_trajectory_size() const {
  return _internal_future_trajectory_size();
}
inline ::osi3::StatePoint* MovingObject::mutable_future_trajectory(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.future_trajectory)
  return future_trajectory_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
MovingObject::mutable_future_trajectory() {
  // @@protoc_insertion_point(field_mutable_list:osi3.MovingObject.future_trajectory)
  return &future_trajectory_;
}
inline const ::osi3::StatePoint& MovingObject::_internal_future_trajectory(int index) const {
  return future_trajectory_.Get(index);
}
inline const ::osi3::StatePoint& MovingObject::future_trajectory(int index) const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.future_trajectory)
  return _internal_future_trajectory(index);
}
inline ::osi3::StatePoint* MovingObject::_internal_add_future_trajectory() {
  return future_trajectory_.Add();
}
inline ::osi3::StatePoint* MovingObject::add_future_trajectory() {
  // @@protoc_insertion_point(field_add:osi3.MovingObject.future_trajectory)
  return _internal_add_future_trajectory();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
MovingObject::future_trajectory() const {
  // @@protoc_insertion_point(field_list:osi3.MovingObject.future_trajectory)
  return future_trajectory_;
}

// .osi3.MovingObject.MovingObjectClassification moving_object_classification = 9;
inline bool MovingObject::_internal_has_moving_object_classification() const {
  return this != internal_default_instance() && moving_object_classification_ != nullptr;
}
inline bool MovingObject::has_moving_object_classification() const {
  return _internal_has_moving_object_classification();
}
inline void MovingObject::clear_moving_object_classification() {
  if (GetArena() == nullptr && moving_object_classification_ != nullptr) {
    delete moving_object_classification_;
  }
  moving_object_classification_ = nullptr;
}
inline const ::osi3::MovingObject_MovingObjectClassification& MovingObject::_internal_moving_object_classification() const {
  const ::osi3::MovingObject_MovingObjectClassification* p = moving_object_classification_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::MovingObject_MovingObjectClassification&>(
      ::osi3::_MovingObject_MovingObjectClassification_default_instance_);
}
inline const ::osi3::MovingObject_MovingObjectClassification& MovingObject::moving_object_classification() const {
  // @@protoc_insertion_point(field_get:osi3.MovingObject.moving_object_classification)
  return _internal_moving_object_classification();
}
inline void MovingObject::unsafe_arena_set_allocated_moving_object_classification(
    ::osi3::MovingObject_MovingObjectClassification* moving_object_classification) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(moving_object_classification_);
  }
  moving_object_classification_ = moving_object_classification;
  if (moving_object_classification) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.MovingObject.moving_object_classification)
}
inline ::osi3::MovingObject_MovingObjectClassification* MovingObject::release_moving_object_classification() {
  
  ::osi3::MovingObject_MovingObjectClassification* temp = moving_object_classification_;
  moving_object_classification_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::MovingObject_MovingObjectClassification* MovingObject::unsafe_arena_release_moving_object_classification() {
  // @@protoc_insertion_point(field_release:osi3.MovingObject.moving_object_classification)
  
  ::osi3::MovingObject_MovingObjectClassification* temp = moving_object_classification_;
  moving_object_classification_ = nullptr;
  return temp;
}
inline ::osi3::MovingObject_MovingObjectClassification* MovingObject::_internal_mutable_moving_object_classification() {
  
  if (moving_object_classification_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::MovingObject_MovingObjectClassification>(GetArena());
    moving_object_classification_ = p;
  }
  return moving_object_classification_;
}
inline ::osi3::MovingObject_MovingObjectClassification* MovingObject::mutable_moving_object_classification() {
  // @@protoc_insertion_point(field_mutable:osi3.MovingObject.moving_object_classification)
  return _internal_mutable_moving_object_classification();
}
inline void MovingObject::set_allocated_moving_object_classification(::osi3::MovingObject_MovingObjectClassification* moving_object_classification) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete moving_object_classification_;
  }
  if (moving_object_classification) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(moving_object_classification);
    if (message_arena != submessage_arena) {
      moving_object_classification = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, moving_object_classification, submessage_arena);
    }
    
  } else {
    
  }
  moving_object_classification_ = moving_object_classification;
  // @@protoc_insertion_point(field_set_allocated:osi3.MovingObject.moving_object_classification)
}

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace osi3

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::osi3::StationaryObject_Classification_Type> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::StationaryObject_Classification_Type>() {
  return ::osi3::StationaryObject_Classification_Type_descriptor();
}
template <> struct is_proto_enum< ::osi3::StationaryObject_Classification_Material> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::StationaryObject_Classification_Material>() {
  return ::osi3::StationaryObject_Classification_Material_descriptor();
}
template <> struct is_proto_enum< ::osi3::StationaryObject_Classification_Density> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::StationaryObject_Classification_Density>() {
  return ::osi3::StationaryObject_Classification_Density_descriptor();
}
template <> struct is_proto_enum< ::osi3::StationaryObject_Classification_Color> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::StationaryObject_Classification_Color>() {
  return ::osi3::StationaryObject_Classification_Color_descriptor();
}
template <> struct is_proto_enum< ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState>() {
  return ::osi3::MovingObject_VehicleClassification_LightState_IndicatorState_descriptor();
}
template <> struct is_proto_enum< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState>() {
  return ::osi3::MovingObject_VehicleClassification_LightState_GenericLightState_descriptor();
}
template <> struct is_proto_enum< ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState>() {
  return ::osi3::MovingObject_VehicleClassification_LightState_BrakeLightState_descriptor();
}
template <> struct is_proto_enum< ::osi3::MovingObject_VehicleClassification_Type> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::MovingObject_VehicleClassification_Type>() {
  return ::osi3::MovingObject_VehicleClassification_Type_descriptor();
}
template <> struct is_proto_enum< ::osi3::MovingObject_Type> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::MovingObject_Type>() {
  return ::osi3::MovingObject_Type_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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