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

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

// Internal implementation detail -- do not use these members.
struct TableStruct_osi_5ftrafficcommand_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[16]
    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_5ftrafficcommand_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_osi_5ftrafficcommand_2eproto_metadata_getter(int index);
namespace osi3 {
class TrafficAction;
struct TrafficActionDefaultTypeInternal;
extern TrafficActionDefaultTypeInternal _TrafficAction_default_instance_;
class TrafficAction_AbortActionsAction;
struct TrafficAction_AbortActionsActionDefaultTypeInternal;
extern TrafficAction_AbortActionsActionDefaultTypeInternal _TrafficAction_AbortActionsAction_default_instance_;
class TrafficAction_AcquireGlobalPositionAction;
struct TrafficAction_AcquireGlobalPositionActionDefaultTypeInternal;
extern TrafficAction_AcquireGlobalPositionActionDefaultTypeInternal _TrafficAction_AcquireGlobalPositionAction_default_instance_;
class TrafficAction_ActionHeader;
struct TrafficAction_ActionHeaderDefaultTypeInternal;
extern TrafficAction_ActionHeaderDefaultTypeInternal _TrafficAction_ActionHeader_default_instance_;
class TrafficAction_CustomAction;
struct TrafficAction_CustomActionDefaultTypeInternal;
extern TrafficAction_CustomActionDefaultTypeInternal _TrafficAction_CustomAction_default_instance_;
class TrafficAction_DynamicConstraints;
struct TrafficAction_DynamicConstraintsDefaultTypeInternal;
extern TrafficAction_DynamicConstraintsDefaultTypeInternal _TrafficAction_DynamicConstraints_default_instance_;
class TrafficAction_EndActionsAction;
struct TrafficAction_EndActionsActionDefaultTypeInternal;
extern TrafficAction_EndActionsActionDefaultTypeInternal _TrafficAction_EndActionsAction_default_instance_;
class TrafficAction_FollowPathAction;
struct TrafficAction_FollowPathActionDefaultTypeInternal;
extern TrafficAction_FollowPathActionDefaultTypeInternal _TrafficAction_FollowPathAction_default_instance_;
class TrafficAction_FollowTrajectoryAction;
struct TrafficAction_FollowTrajectoryActionDefaultTypeInternal;
extern TrafficAction_FollowTrajectoryActionDefaultTypeInternal _TrafficAction_FollowTrajectoryAction_default_instance_;
class TrafficAction_LaneChangeAction;
struct TrafficAction_LaneChangeActionDefaultTypeInternal;
extern TrafficAction_LaneChangeActionDefaultTypeInternal _TrafficAction_LaneChangeAction_default_instance_;
class TrafficAction_LaneOffsetAction;
struct TrafficAction_LaneOffsetActionDefaultTypeInternal;
extern TrafficAction_LaneOffsetActionDefaultTypeInternal _TrafficAction_LaneOffsetAction_default_instance_;
class TrafficAction_LateralDistanceAction;
struct TrafficAction_LateralDistanceActionDefaultTypeInternal;
extern TrafficAction_LateralDistanceActionDefaultTypeInternal _TrafficAction_LateralDistanceAction_default_instance_;
class TrafficAction_LongitudinalDistanceAction;
struct TrafficAction_LongitudinalDistanceActionDefaultTypeInternal;
extern TrafficAction_LongitudinalDistanceActionDefaultTypeInternal _TrafficAction_LongitudinalDistanceAction_default_instance_;
class TrafficAction_SpeedAction;
struct TrafficAction_SpeedActionDefaultTypeInternal;
extern TrafficAction_SpeedActionDefaultTypeInternal _TrafficAction_SpeedAction_default_instance_;
class TrafficAction_TeleportAction;
struct TrafficAction_TeleportActionDefaultTypeInternal;
extern TrafficAction_TeleportActionDefaultTypeInternal _TrafficAction_TeleportAction_default_instance_;
class TrafficCommand;
struct TrafficCommandDefaultTypeInternal;
extern TrafficCommandDefaultTypeInternal _TrafficCommand_default_instance_;
}  // namespace osi3
PROTOBUF_NAMESPACE_OPEN
template<> ::osi3::TrafficAction* Arena::CreateMaybeMessage<::osi3::TrafficAction>(Arena*);
template<> ::osi3::TrafficAction_AbortActionsAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_AbortActionsAction>(Arena*);
template<> ::osi3::TrafficAction_AcquireGlobalPositionAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_AcquireGlobalPositionAction>(Arena*);
template<> ::osi3::TrafficAction_ActionHeader* Arena::CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(Arena*);
template<> ::osi3::TrafficAction_CustomAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_CustomAction>(Arena*);
template<> ::osi3::TrafficAction_DynamicConstraints* Arena::CreateMaybeMessage<::osi3::TrafficAction_DynamicConstraints>(Arena*);
template<> ::osi3::TrafficAction_EndActionsAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_EndActionsAction>(Arena*);
template<> ::osi3::TrafficAction_FollowPathAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_FollowPathAction>(Arena*);
template<> ::osi3::TrafficAction_FollowTrajectoryAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_FollowTrajectoryAction>(Arena*);
template<> ::osi3::TrafficAction_LaneChangeAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_LaneChangeAction>(Arena*);
template<> ::osi3::TrafficAction_LaneOffsetAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_LaneOffsetAction>(Arena*);
template<> ::osi3::TrafficAction_LateralDistanceAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_LateralDistanceAction>(Arena*);
template<> ::osi3::TrafficAction_LongitudinalDistanceAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_LongitudinalDistanceAction>(Arena*);
template<> ::osi3::TrafficAction_SpeedAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_SpeedAction>(Arena*);
template<> ::osi3::TrafficAction_TeleportAction* Arena::CreateMaybeMessage<::osi3::TrafficAction_TeleportAction>(Arena*);
template<> ::osi3::TrafficCommand* Arena::CreateMaybeMessage<::osi3::TrafficCommand>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace osi3 {

enum TrafficAction_FollowingMode : int {
  TrafficAction_FollowingMode_FOLLOWING_MODE_POSITION = 0,
  TrafficAction_FollowingMode_FOLLOWING_MODE_FOLLOW = 1,
  TrafficAction_FollowingMode_TrafficAction_FollowingMode_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  TrafficAction_FollowingMode_TrafficAction_FollowingMode_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool TrafficAction_FollowingMode_IsValid(int value);
constexpr TrafficAction_FollowingMode TrafficAction_FollowingMode_FollowingMode_MIN = TrafficAction_FollowingMode_FOLLOWING_MODE_POSITION;
constexpr TrafficAction_FollowingMode TrafficAction_FollowingMode_FollowingMode_MAX = TrafficAction_FollowingMode_FOLLOWING_MODE_FOLLOW;
constexpr int TrafficAction_FollowingMode_FollowingMode_ARRAYSIZE = TrafficAction_FollowingMode_FollowingMode_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* TrafficAction_FollowingMode_descriptor();
template<typename T>
inline const std::string& TrafficAction_FollowingMode_Name(T enum_t_value) {
  static_assert(::std::is_same<T, TrafficAction_FollowingMode>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function TrafficAction_FollowingMode_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    TrafficAction_FollowingMode_descriptor(), enum_t_value);
}
inline bool TrafficAction_FollowingMode_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, TrafficAction_FollowingMode* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<TrafficAction_FollowingMode>(
    TrafficAction_FollowingMode_descriptor(), name, value);
}
enum TrafficAction_DynamicsShape : int {
  TrafficAction_DynamicsShape_DYNAMICS_SHAPE_UNSPECIFIED = 0,
  TrafficAction_DynamicsShape_DYNAMICS_SHAPE_LINEAR = 1,
  TrafficAction_DynamicsShape_DYNAMICS_SHAPE_CUBIC = 2,
  TrafficAction_DynamicsShape_DYNAMICS_SHAPE_SINUSOIDAL = 3,
  TrafficAction_DynamicsShape_DYNAMICS_SHAPE_STEP = 4,
  TrafficAction_DynamicsShape_TrafficAction_DynamicsShape_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  TrafficAction_DynamicsShape_TrafficAction_DynamicsShape_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool TrafficAction_DynamicsShape_IsValid(int value);
constexpr TrafficAction_DynamicsShape TrafficAction_DynamicsShape_DynamicsShape_MIN = TrafficAction_DynamicsShape_DYNAMICS_SHAPE_UNSPECIFIED;
constexpr TrafficAction_DynamicsShape TrafficAction_DynamicsShape_DynamicsShape_MAX = TrafficAction_DynamicsShape_DYNAMICS_SHAPE_STEP;
constexpr int TrafficAction_DynamicsShape_DynamicsShape_ARRAYSIZE = TrafficAction_DynamicsShape_DynamicsShape_MAX + 1;

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

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionFieldNumber = 4,
    kVersionFieldNumber = 1,
    kTimestampFieldNumber = 2,
    kTrafficParticipantIdFieldNumber = 3,
  };
  // repeated .osi3.TrafficAction action = 4;
  int action_size() const;
  private:
  int _internal_action_size() const;
  public:
  void clear_action();
  ::osi3::TrafficAction* mutable_action(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficAction >*
      mutable_action();
  private:
  const ::osi3::TrafficAction& _internal_action(int index) const;
  ::osi3::TrafficAction* _internal_add_action();
  public:
  const ::osi3::TrafficAction& action(int index) const;
  ::osi3::TrafficAction* add_action();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficAction >&
      action() const;

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

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

  // .osi3.Identifier traffic_participant_id = 3;
  bool has_traffic_participant_id() const;
  private:
  bool _internal_has_traffic_participant_id() const;
  public:
  void clear_traffic_participant_id();
  const ::osi3::Identifier& traffic_participant_id() const;
  ::osi3::Identifier* release_traffic_participant_id();
  ::osi3::Identifier* mutable_traffic_participant_id();
  void set_allocated_traffic_participant_id(::osi3::Identifier* traffic_participant_id);
  private:
  const ::osi3::Identifier& _internal_traffic_participant_id() const;
  ::osi3::Identifier* _internal_mutable_traffic_participant_id();
  public:
  void unsafe_arena_set_allocated_traffic_participant_id(
      ::osi3::Identifier* traffic_participant_id);
  ::osi3::Identifier* unsafe_arena_release_traffic_participant_id();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficAction > action_;
  ::osi3::InterfaceVersion* version_;
  ::osi3::Timestamp* timestamp_;
  ::osi3::Identifier* traffic_participant_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionIdFieldNumber = 1,
  };
  // .osi3.Identifier action_id = 1;
  bool has_action_id() const;
  private:
  bool _internal_has_action_id() const;
  public:
  void clear_action_id();
  const ::osi3::Identifier& action_id() const;
  ::osi3::Identifier* release_action_id();
  ::osi3::Identifier* mutable_action_id();
  void set_allocated_action_id(::osi3::Identifier* action_id);
  private:
  const ::osi3::Identifier& _internal_action_id() const;
  ::osi3::Identifier* _internal_mutable_action_id();
  public:
  void unsafe_arena_set_allocated_action_id(
      ::osi3::Identifier* action_id);
  ::osi3::Identifier* unsafe_arena_release_action_id();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::Identifier* action_id_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kMaxAccelerationFieldNumber = 1,
    kMaxDecelerationFieldNumber = 2,
    kMaxSpeedFieldNumber = 3,
  };
  // double max_acceleration = 1;
  void clear_max_acceleration();
  double max_acceleration() const;
  void set_max_acceleration(double value);
  private:
  double _internal_max_acceleration() const;
  void _internal_set_max_acceleration(double value);
  public:

  // double max_deceleration = 2;
  void clear_max_deceleration();
  double max_deceleration() const;
  void set_max_deceleration(double value);
  private:
  double _internal_max_deceleration() const;
  void _internal_set_max_deceleration(double value);
  public:

  // double max_speed = 3;
  void clear_max_speed();
  double max_speed() const;
  void set_max_speed(double value);
  private:
  double _internal_max_speed() const;
  void _internal_set_max_speed(double value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  double max_acceleration_;
  double max_deceleration_;
  double max_speed_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kTrajectoryPointFieldNumber = 2,
    kActionHeaderFieldNumber = 1,
    kConstrainOrientationFieldNumber = 3,
    kFollowingModeFieldNumber = 4,
  };
  // repeated .osi3.StatePoint trajectory_point = 2;
  int trajectory_point_size() const;
  private:
  int _internal_trajectory_point_size() const;
  public:
  void clear_trajectory_point();
  ::osi3::StatePoint* mutable_trajectory_point(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
      mutable_trajectory_point();
  private:
  const ::osi3::StatePoint& _internal_trajectory_point(int index) const;
  ::osi3::StatePoint* _internal_add_trajectory_point();
  public:
  const ::osi3::StatePoint& trajectory_point(int index) const;
  ::osi3::StatePoint* add_trajectory_point();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
      trajectory_point() const;

  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // bool constrain_orientation = 3;
  void clear_constrain_orientation();
  bool constrain_orientation() const;
  void set_constrain_orientation(bool value);
  private:
  bool _internal_constrain_orientation() const;
  void _internal_set_constrain_orientation(bool value);
  public:

  // .osi3.TrafficAction.FollowingMode following_mode = 4;
  void clear_following_mode();
  ::osi3::TrafficAction_FollowingMode following_mode() const;
  void set_following_mode(::osi3::TrafficAction_FollowingMode value);
  private:
  ::osi3::TrafficAction_FollowingMode _internal_following_mode() const;
  void _internal_set_following_mode(::osi3::TrafficAction_FollowingMode value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint > trajectory_point_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  bool constrain_orientation_;
  int following_mode_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kPathPointFieldNumber = 2,
    kActionHeaderFieldNumber = 1,
    kConstrainOrientationFieldNumber = 3,
    kFollowingModeFieldNumber = 4,
  };
  // repeated .osi3.StatePoint path_point = 2;
  int path_point_size() const;
  private:
  int _internal_path_point_size() const;
  public:
  void clear_path_point();
  ::osi3::StatePoint* mutable_path_point(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
      mutable_path_point();
  private:
  const ::osi3::StatePoint& _internal_path_point(int index) const;
  ::osi3::StatePoint* _internal_add_path_point();
  public:
  const ::osi3::StatePoint& path_point(int index) const;
  ::osi3::StatePoint* add_path_point();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
      path_point() const;

  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // bool constrain_orientation = 3;
  void clear_constrain_orientation();
  bool constrain_orientation() const;
  void set_constrain_orientation(bool value);
  private:
  bool _internal_constrain_orientation() const;
  void _internal_set_constrain_orientation(bool value);
  public:

  // .osi3.TrafficAction.FollowingMode following_mode = 4;
  void clear_following_mode();
  ::osi3::TrafficAction_FollowingMode following_mode() const;
  void set_following_mode(::osi3::TrafficAction_FollowingMode value);
  private:
  ::osi3::TrafficAction_FollowingMode _internal_following_mode() const;
  void _internal_set_following_mode(::osi3::TrafficAction_FollowingMode value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint > path_point_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  bool constrain_orientation_;
  int following_mode_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kPositionFieldNumber = 2,
    kOrientationFieldNumber = 3,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // .osi3.Vector3d position = 2;
  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 = 3;
  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();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  ::osi3::Vector3d* position_;
  ::osi3::Orientation3d* orientation_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kRelativeTargetLaneFieldNumber = 2,
    kDynamicsShapeFieldNumber = 3,
    kDurationFieldNumber = 4,
    kDistanceFieldNumber = 5,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // int32 relative_target_lane = 2;
  void clear_relative_target_lane();
  ::PROTOBUF_NAMESPACE_ID::int32 relative_target_lane() const;
  void set_relative_target_lane(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_relative_target_lane() const;
  void _internal_set_relative_target_lane(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
  void clear_dynamics_shape();
  ::osi3::TrafficAction_DynamicsShape dynamics_shape() const;
  void set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  private:
  ::osi3::TrafficAction_DynamicsShape _internal_dynamics_shape() const;
  void _internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  public:

  // double duration = 4;
  void clear_duration();
  double duration() const;
  void set_duration(double value);
  private:
  double _internal_duration() const;
  void _internal_set_duration(double value);
  public:

  // double distance = 5;
  void clear_distance();
  double distance() const;
  void set_distance(double value);
  private:
  double _internal_distance() const;
  void _internal_set_distance(double value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  ::PROTOBUF_NAMESPACE_ID::int32 relative_target_lane_;
  int dynamics_shape_;
  double duration_;
  double distance_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kAbsoluteTargetSpeedFieldNumber = 2,
    kDurationFieldNumber = 4,
    kDistanceFieldNumber = 5,
    kDynamicsShapeFieldNumber = 3,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // double absolute_target_speed = 2;
  void clear_absolute_target_speed();
  double absolute_target_speed() const;
  void set_absolute_target_speed(double value);
  private:
  double _internal_absolute_target_speed() const;
  void _internal_set_absolute_target_speed(double value);
  public:

  // double duration = 4;
  void clear_duration();
  double duration() const;
  void set_duration(double value);
  private:
  double _internal_duration() const;
  void _internal_set_duration(double value);
  public:

  // double distance = 5;
  void clear_distance();
  double distance() const;
  void set_distance(double value);
  private:
  double _internal_distance() const;
  void _internal_set_distance(double value);
  public:

  // .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
  void clear_dynamics_shape();
  ::osi3::TrafficAction_DynamicsShape dynamics_shape() const;
  void set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  private:
  ::osi3::TrafficAction_DynamicsShape _internal_dynamics_shape() const;
  void _internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  double absolute_target_speed_;
  double duration_;
  double distance_;
  int dynamics_shape_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kTargetActionIdFieldNumber = 2,
    kActionHeaderFieldNumber = 1,
  };
  // repeated .osi3.Identifier target_action_id = 2;
  int target_action_id_size() const;
  private:
  int _internal_target_action_id_size() const;
  public:
  void clear_target_action_id();
  ::osi3::Identifier* mutable_target_action_id(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
      mutable_target_action_id();
  private:
  const ::osi3::Identifier& _internal_target_action_id(int index) const;
  ::osi3::Identifier* _internal_add_target_action_id();
  public:
  const ::osi3::Identifier& target_action_id(int index) const;
  ::osi3::Identifier* add_target_action_id();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
      target_action_id() const;

  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // @@protoc_insertion_point(class_scope:osi3.TrafficAction.AbortActionsAction)
 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 > target_action_id_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kTargetActionIdFieldNumber = 2,
    kActionHeaderFieldNumber = 1,
  };
  // repeated .osi3.Identifier target_action_id = 2;
  int target_action_id_size() const;
  private:
  int _internal_target_action_id_size() const;
  public:
  void clear_target_action_id();
  ::osi3::Identifier* mutable_target_action_id(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
      mutable_target_action_id();
  private:
  const ::osi3::Identifier& _internal_target_action_id(int index) const;
  ::osi3::Identifier* _internal_add_target_action_id();
  public:
  const ::osi3::Identifier& target_action_id(int index) const;
  ::osi3::Identifier* add_target_action_id();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
      target_action_id() const;

  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // @@protoc_insertion_point(class_scope:osi3.TrafficAction.EndActionsAction)
 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 > target_action_id_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kCommandFieldNumber = 2,
    kActionHeaderFieldNumber = 1,
  };
  // string command = 2;
  void clear_command();
  const std::string& command() const;
  void set_command(const std::string& value);
  void set_command(std::string&& value);
  void set_command(const char* value);
  void set_command(const char* value, size_t size);
  std::string* mutable_command();
  std::string* release_command();
  void set_allocated_command(std::string* command);
  private:
  const std::string& _internal_command() const;
  void _internal_set_command(const std::string& value);
  std::string* _internal_mutable_command();
  public:

  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr command_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kTargetTrafficParticipantIdFieldNumber = 2,
    kDynamicConstraintsFieldNumber = 6,
    kDistanceFieldNumber = 3,
    kFreespaceFieldNumber = 4,
    kFollowFieldNumber = 5,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // .osi3.Identifier target_traffic_participant_id = 2;
  bool has_target_traffic_participant_id() const;
  private:
  bool _internal_has_target_traffic_participant_id() const;
  public:
  void clear_target_traffic_participant_id();
  const ::osi3::Identifier& target_traffic_participant_id() const;
  ::osi3::Identifier* release_target_traffic_participant_id();
  ::osi3::Identifier* mutable_target_traffic_participant_id();
  void set_allocated_target_traffic_participant_id(::osi3::Identifier* target_traffic_participant_id);
  private:
  const ::osi3::Identifier& _internal_target_traffic_participant_id() const;
  ::osi3::Identifier* _internal_mutable_target_traffic_participant_id();
  public:
  void unsafe_arena_set_allocated_target_traffic_participant_id(
      ::osi3::Identifier* target_traffic_participant_id);
  ::osi3::Identifier* unsafe_arena_release_target_traffic_participant_id();

  // .osi3.TrafficAction.DynamicConstraints dynamic_constraints = 6;
  bool has_dynamic_constraints() const;
  private:
  bool _internal_has_dynamic_constraints() const;
  public:
  void clear_dynamic_constraints();
  const ::osi3::TrafficAction_DynamicConstraints& dynamic_constraints() const;
  ::osi3::TrafficAction_DynamicConstraints* release_dynamic_constraints();
  ::osi3::TrafficAction_DynamicConstraints* mutable_dynamic_constraints();
  void set_allocated_dynamic_constraints(::osi3::TrafficAction_DynamicConstraints* dynamic_constraints);
  private:
  const ::osi3::TrafficAction_DynamicConstraints& _internal_dynamic_constraints() const;
  ::osi3::TrafficAction_DynamicConstraints* _internal_mutable_dynamic_constraints();
  public:
  void unsafe_arena_set_allocated_dynamic_constraints(
      ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints);
  ::osi3::TrafficAction_DynamicConstraints* unsafe_arena_release_dynamic_constraints();

  // double distance = 3;
  void clear_distance();
  double distance() const;
  void set_distance(double value);
  private:
  double _internal_distance() const;
  void _internal_set_distance(double value);
  public:

  // bool freespace = 4;
  void clear_freespace();
  bool freespace() const;
  void set_freespace(bool value);
  private:
  bool _internal_freespace() const;
  void _internal_set_freespace(bool value);
  public:

  // bool follow = 5;
  void clear_follow();
  bool follow() const;
  void set_follow(bool value);
  private:
  bool _internal_follow() const;
  void _internal_set_follow(bool value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  ::osi3::Identifier* target_traffic_participant_id_;
  ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints_;
  double distance_;
  bool freespace_;
  bool follow_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kTargetTrafficParticipantIdFieldNumber = 2,
    kDynamicConstraintsFieldNumber = 6,
    kDistanceFieldNumber = 3,
    kFreespaceFieldNumber = 4,
    kFollowFieldNumber = 5,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // .osi3.Identifier target_traffic_participant_id = 2;
  bool has_target_traffic_participant_id() const;
  private:
  bool _internal_has_target_traffic_participant_id() const;
  public:
  void clear_target_traffic_participant_id();
  const ::osi3::Identifier& target_traffic_participant_id() const;
  ::osi3::Identifier* release_target_traffic_participant_id();
  ::osi3::Identifier* mutable_target_traffic_participant_id();
  void set_allocated_target_traffic_participant_id(::osi3::Identifier* target_traffic_participant_id);
  private:
  const ::osi3::Identifier& _internal_target_traffic_participant_id() const;
  ::osi3::Identifier* _internal_mutable_target_traffic_participant_id();
  public:
  void unsafe_arena_set_allocated_target_traffic_participant_id(
      ::osi3::Identifier* target_traffic_participant_id);
  ::osi3::Identifier* unsafe_arena_release_target_traffic_participant_id();

  // .osi3.TrafficAction.DynamicConstraints dynamic_constraints = 6;
  bool has_dynamic_constraints() const;
  private:
  bool _internal_has_dynamic_constraints() const;
  public:
  void clear_dynamic_constraints();
  const ::osi3::TrafficAction_DynamicConstraints& dynamic_constraints() const;
  ::osi3::TrafficAction_DynamicConstraints* release_dynamic_constraints();
  ::osi3::TrafficAction_DynamicConstraints* mutable_dynamic_constraints();
  void set_allocated_dynamic_constraints(::osi3::TrafficAction_DynamicConstraints* dynamic_constraints);
  private:
  const ::osi3::TrafficAction_DynamicConstraints& _internal_dynamic_constraints() const;
  ::osi3::TrafficAction_DynamicConstraints* _internal_mutable_dynamic_constraints();
  public:
  void unsafe_arena_set_allocated_dynamic_constraints(
      ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints);
  ::osi3::TrafficAction_DynamicConstraints* unsafe_arena_release_dynamic_constraints();

  // double distance = 3;
  void clear_distance();
  double distance() const;
  void set_distance(double value);
  private:
  double _internal_distance() const;
  void _internal_set_distance(double value);
  public:

  // bool freespace = 4;
  void clear_freespace();
  bool freespace() const;
  void set_freespace(bool value);
  private:
  bool _internal_freespace() const;
  void _internal_set_freespace(bool value);
  public:

  // bool follow = 5;
  void clear_follow();
  bool follow() const;
  void set_follow(bool value);
  private:
  bool _internal_follow() const;
  void _internal_set_follow(bool value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  ::osi3::Identifier* target_traffic_participant_id_;
  ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints_;
  double distance_;
  bool freespace_;
  bool follow_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kTargetLaneOffsetFieldNumber = 2,
    kDynamicsShapeFieldNumber = 3,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // double target_lane_offset = 2;
  void clear_target_lane_offset();
  double target_lane_offset() const;
  void set_target_lane_offset(double value);
  private:
  double _internal_target_lane_offset() const;
  void _internal_set_target_lane_offset(double value);
  public:

  // .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
  void clear_dynamics_shape();
  ::osi3::TrafficAction_DynamicsShape dynamics_shape() const;
  void set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  private:
  ::osi3::TrafficAction_DynamicsShape _internal_dynamics_shape() const;
  void _internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value);
  public:

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  double target_lane_offset_;
  int dynamics_shape_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

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

  enum : int {
    kActionHeaderFieldNumber = 1,
    kPositionFieldNumber = 2,
    kOrientationFieldNumber = 3,
  };
  // .osi3.TrafficAction.ActionHeader action_header = 1;
  bool has_action_header() const;
  private:
  bool _internal_has_action_header() const;
  public:
  void clear_action_header();
  const ::osi3::TrafficAction_ActionHeader& action_header() const;
  ::osi3::TrafficAction_ActionHeader* release_action_header();
  ::osi3::TrafficAction_ActionHeader* mutable_action_header();
  void set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header);
  private:
  const ::osi3::TrafficAction_ActionHeader& _internal_action_header() const;
  ::osi3::TrafficAction_ActionHeader* _internal_mutable_action_header();
  public:
  void unsafe_arena_set_allocated_action_header(
      ::osi3::TrafficAction_ActionHeader* action_header);
  ::osi3::TrafficAction_ActionHeader* unsafe_arena_release_action_header();

  // .osi3.Vector3d position = 2;
  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 = 3;
  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();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_ActionHeader* action_header_;
  ::osi3::Vector3d* position_;
  ::osi3::Orientation3d* orientation_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// -------------------------------------------------------------------

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

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

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

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

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

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

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

  public:

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

  typedef TrafficAction_ActionHeader ActionHeader;
  typedef TrafficAction_DynamicConstraints DynamicConstraints;
  typedef TrafficAction_FollowTrajectoryAction FollowTrajectoryAction;
  typedef TrafficAction_FollowPathAction FollowPathAction;
  typedef TrafficAction_AcquireGlobalPositionAction AcquireGlobalPositionAction;
  typedef TrafficAction_LaneChangeAction LaneChangeAction;
  typedef TrafficAction_SpeedAction SpeedAction;
  typedef TrafficAction_AbortActionsAction AbortActionsAction;
  typedef TrafficAction_EndActionsAction EndActionsAction;
  typedef TrafficAction_CustomAction CustomAction;
  typedef TrafficAction_LongitudinalDistanceAction LongitudinalDistanceAction;
  typedef TrafficAction_LateralDistanceAction LateralDistanceAction;
  typedef TrafficAction_LaneOffsetAction LaneOffsetAction;
  typedef TrafficAction_TeleportAction TeleportAction;

  typedef TrafficAction_FollowingMode FollowingMode;
  static constexpr FollowingMode FOLLOWING_MODE_POSITION =
    TrafficAction_FollowingMode_FOLLOWING_MODE_POSITION;
  static constexpr FollowingMode FOLLOWING_MODE_FOLLOW =
    TrafficAction_FollowingMode_FOLLOWING_MODE_FOLLOW;
  static inline bool FollowingMode_IsValid(int value) {
    return TrafficAction_FollowingMode_IsValid(value);
  }
  static constexpr FollowingMode FollowingMode_MIN =
    TrafficAction_FollowingMode_FollowingMode_MIN;
  static constexpr FollowingMode FollowingMode_MAX =
    TrafficAction_FollowingMode_FollowingMode_MAX;
  static constexpr int FollowingMode_ARRAYSIZE =
    TrafficAction_FollowingMode_FollowingMode_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  FollowingMode_descriptor() {
    return TrafficAction_FollowingMode_descriptor();
  }
  template<typename T>
  static inline const std::string& FollowingMode_Name(T enum_t_value) {
    static_assert(::std::is_same<T, FollowingMode>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function FollowingMode_Name.");
    return TrafficAction_FollowingMode_Name(enum_t_value);
  }
  static inline bool FollowingMode_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      FollowingMode* value) {
    return TrafficAction_FollowingMode_Parse(name, value);
  }

  typedef TrafficAction_DynamicsShape DynamicsShape;
  static constexpr DynamicsShape DYNAMICS_SHAPE_UNSPECIFIED =
    TrafficAction_DynamicsShape_DYNAMICS_SHAPE_UNSPECIFIED;
  static constexpr DynamicsShape DYNAMICS_SHAPE_LINEAR =
    TrafficAction_DynamicsShape_DYNAMICS_SHAPE_LINEAR;
  static constexpr DynamicsShape DYNAMICS_SHAPE_CUBIC =
    TrafficAction_DynamicsShape_DYNAMICS_SHAPE_CUBIC;
  static constexpr DynamicsShape DYNAMICS_SHAPE_SINUSOIDAL =
    TrafficAction_DynamicsShape_DYNAMICS_SHAPE_SINUSOIDAL;
  static constexpr DynamicsShape DYNAMICS_SHAPE_STEP =
    TrafficAction_DynamicsShape_DYNAMICS_SHAPE_STEP;
  static inline bool DynamicsShape_IsValid(int value) {
    return TrafficAction_DynamicsShape_IsValid(value);
  }
  static constexpr DynamicsShape DynamicsShape_MIN =
    TrafficAction_DynamicsShape_DynamicsShape_MIN;
  static constexpr DynamicsShape DynamicsShape_MAX =
    TrafficAction_DynamicsShape_DynamicsShape_MAX;
  static constexpr int DynamicsShape_ARRAYSIZE =
    TrafficAction_DynamicsShape_DynamicsShape_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  DynamicsShape_descriptor() {
    return TrafficAction_DynamicsShape_descriptor();
  }
  template<typename T>
  static inline const std::string& DynamicsShape_Name(T enum_t_value) {
    static_assert(::std::is_same<T, DynamicsShape>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function DynamicsShape_Name.");
    return TrafficAction_DynamicsShape_Name(enum_t_value);
  }
  static inline bool DynamicsShape_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      DynamicsShape* value) {
    return TrafficAction_DynamicsShape_Parse(name, value);
  }

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

  enum : int {
    kFollowTrajectoryActionFieldNumber = 1,
    kFollowPathActionFieldNumber = 2,
    kAcquireGlobalPositionActionFieldNumber = 3,
    kLaneChangeActionFieldNumber = 4,
    kSpeedActionFieldNumber = 5,
    kAbortActionsActionFieldNumber = 6,
    kEndActionsActionFieldNumber = 7,
    kCustomActionFieldNumber = 8,
    kLongitudinalDistanceActionFieldNumber = 9,
    kLaneOffsetActionFieldNumber = 10,
    kLateralDistanceActionFieldNumber = 11,
    kTeleportActionFieldNumber = 12,
  };
  // .osi3.TrafficAction.FollowTrajectoryAction follow_trajectory_action = 1;
  bool has_follow_trajectory_action() const;
  private:
  bool _internal_has_follow_trajectory_action() const;
  public:
  void clear_follow_trajectory_action();
  const ::osi3::TrafficAction_FollowTrajectoryAction& follow_trajectory_action() const;
  ::osi3::TrafficAction_FollowTrajectoryAction* release_follow_trajectory_action();
  ::osi3::TrafficAction_FollowTrajectoryAction* mutable_follow_trajectory_action();
  void set_allocated_follow_trajectory_action(::osi3::TrafficAction_FollowTrajectoryAction* follow_trajectory_action);
  private:
  const ::osi3::TrafficAction_FollowTrajectoryAction& _internal_follow_trajectory_action() const;
  ::osi3::TrafficAction_FollowTrajectoryAction* _internal_mutable_follow_trajectory_action();
  public:
  void unsafe_arena_set_allocated_follow_trajectory_action(
      ::osi3::TrafficAction_FollowTrajectoryAction* follow_trajectory_action);
  ::osi3::TrafficAction_FollowTrajectoryAction* unsafe_arena_release_follow_trajectory_action();

  // .osi3.TrafficAction.FollowPathAction follow_path_action = 2;
  bool has_follow_path_action() const;
  private:
  bool _internal_has_follow_path_action() const;
  public:
  void clear_follow_path_action();
  const ::osi3::TrafficAction_FollowPathAction& follow_path_action() const;
  ::osi3::TrafficAction_FollowPathAction* release_follow_path_action();
  ::osi3::TrafficAction_FollowPathAction* mutable_follow_path_action();
  void set_allocated_follow_path_action(::osi3::TrafficAction_FollowPathAction* follow_path_action);
  private:
  const ::osi3::TrafficAction_FollowPathAction& _internal_follow_path_action() const;
  ::osi3::TrafficAction_FollowPathAction* _internal_mutable_follow_path_action();
  public:
  void unsafe_arena_set_allocated_follow_path_action(
      ::osi3::TrafficAction_FollowPathAction* follow_path_action);
  ::osi3::TrafficAction_FollowPathAction* unsafe_arena_release_follow_path_action();

  // .osi3.TrafficAction.AcquireGlobalPositionAction acquire_global_position_action = 3;
  bool has_acquire_global_position_action() const;
  private:
  bool _internal_has_acquire_global_position_action() const;
  public:
  void clear_acquire_global_position_action();
  const ::osi3::TrafficAction_AcquireGlobalPositionAction& acquire_global_position_action() const;
  ::osi3::TrafficAction_AcquireGlobalPositionAction* release_acquire_global_position_action();
  ::osi3::TrafficAction_AcquireGlobalPositionAction* mutable_acquire_global_position_action();
  void set_allocated_acquire_global_position_action(::osi3::TrafficAction_AcquireGlobalPositionAction* acquire_global_position_action);
  private:
  const ::osi3::TrafficAction_AcquireGlobalPositionAction& _internal_acquire_global_position_action() const;
  ::osi3::TrafficAction_AcquireGlobalPositionAction* _internal_mutable_acquire_global_position_action();
  public:
  void unsafe_arena_set_allocated_acquire_global_position_action(
      ::osi3::TrafficAction_AcquireGlobalPositionAction* acquire_global_position_action);
  ::osi3::TrafficAction_AcquireGlobalPositionAction* unsafe_arena_release_acquire_global_position_action();

  // .osi3.TrafficAction.LaneChangeAction lane_change_action = 4;
  bool has_lane_change_action() const;
  private:
  bool _internal_has_lane_change_action() const;
  public:
  void clear_lane_change_action();
  const ::osi3::TrafficAction_LaneChangeAction& lane_change_action() const;
  ::osi3::TrafficAction_LaneChangeAction* release_lane_change_action();
  ::osi3::TrafficAction_LaneChangeAction* mutable_lane_change_action();
  void set_allocated_lane_change_action(::osi3::TrafficAction_LaneChangeAction* lane_change_action);
  private:
  const ::osi3::TrafficAction_LaneChangeAction& _internal_lane_change_action() const;
  ::osi3::TrafficAction_LaneChangeAction* _internal_mutable_lane_change_action();
  public:
  void unsafe_arena_set_allocated_lane_change_action(
      ::osi3::TrafficAction_LaneChangeAction* lane_change_action);
  ::osi3::TrafficAction_LaneChangeAction* unsafe_arena_release_lane_change_action();

  // .osi3.TrafficAction.SpeedAction speed_action = 5;
  bool has_speed_action() const;
  private:
  bool _internal_has_speed_action() const;
  public:
  void clear_speed_action();
  const ::osi3::TrafficAction_SpeedAction& speed_action() const;
  ::osi3::TrafficAction_SpeedAction* release_speed_action();
  ::osi3::TrafficAction_SpeedAction* mutable_speed_action();
  void set_allocated_speed_action(::osi3::TrafficAction_SpeedAction* speed_action);
  private:
  const ::osi3::TrafficAction_SpeedAction& _internal_speed_action() const;
  ::osi3::TrafficAction_SpeedAction* _internal_mutable_speed_action();
  public:
  void unsafe_arena_set_allocated_speed_action(
      ::osi3::TrafficAction_SpeedAction* speed_action);
  ::osi3::TrafficAction_SpeedAction* unsafe_arena_release_speed_action();

  // .osi3.TrafficAction.AbortActionsAction abort_actions_action = 6;
  bool has_abort_actions_action() const;
  private:
  bool _internal_has_abort_actions_action() const;
  public:
  void clear_abort_actions_action();
  const ::osi3::TrafficAction_AbortActionsAction& abort_actions_action() const;
  ::osi3::TrafficAction_AbortActionsAction* release_abort_actions_action();
  ::osi3::TrafficAction_AbortActionsAction* mutable_abort_actions_action();
  void set_allocated_abort_actions_action(::osi3::TrafficAction_AbortActionsAction* abort_actions_action);
  private:
  const ::osi3::TrafficAction_AbortActionsAction& _internal_abort_actions_action() const;
  ::osi3::TrafficAction_AbortActionsAction* _internal_mutable_abort_actions_action();
  public:
  void unsafe_arena_set_allocated_abort_actions_action(
      ::osi3::TrafficAction_AbortActionsAction* abort_actions_action);
  ::osi3::TrafficAction_AbortActionsAction* unsafe_arena_release_abort_actions_action();

  // .osi3.TrafficAction.EndActionsAction end_actions_action = 7;
  bool has_end_actions_action() const;
  private:
  bool _internal_has_end_actions_action() const;
  public:
  void clear_end_actions_action();
  const ::osi3::TrafficAction_EndActionsAction& end_actions_action() const;
  ::osi3::TrafficAction_EndActionsAction* release_end_actions_action();
  ::osi3::TrafficAction_EndActionsAction* mutable_end_actions_action();
  void set_allocated_end_actions_action(::osi3::TrafficAction_EndActionsAction* end_actions_action);
  private:
  const ::osi3::TrafficAction_EndActionsAction& _internal_end_actions_action() const;
  ::osi3::TrafficAction_EndActionsAction* _internal_mutable_end_actions_action();
  public:
  void unsafe_arena_set_allocated_end_actions_action(
      ::osi3::TrafficAction_EndActionsAction* end_actions_action);
  ::osi3::TrafficAction_EndActionsAction* unsafe_arena_release_end_actions_action();

  // .osi3.TrafficAction.CustomAction custom_action = 8;
  bool has_custom_action() const;
  private:
  bool _internal_has_custom_action() const;
  public:
  void clear_custom_action();
  const ::osi3::TrafficAction_CustomAction& custom_action() const;
  ::osi3::TrafficAction_CustomAction* release_custom_action();
  ::osi3::TrafficAction_CustomAction* mutable_custom_action();
  void set_allocated_custom_action(::osi3::TrafficAction_CustomAction* custom_action);
  private:
  const ::osi3::TrafficAction_CustomAction& _internal_custom_action() const;
  ::osi3::TrafficAction_CustomAction* _internal_mutable_custom_action();
  public:
  void unsafe_arena_set_allocated_custom_action(
      ::osi3::TrafficAction_CustomAction* custom_action);
  ::osi3::TrafficAction_CustomAction* unsafe_arena_release_custom_action();

  // .osi3.TrafficAction.LongitudinalDistanceAction longitudinal_distance_action = 9;
  bool has_longitudinal_distance_action() const;
  private:
  bool _internal_has_longitudinal_distance_action() const;
  public:
  void clear_longitudinal_distance_action();
  const ::osi3::TrafficAction_LongitudinalDistanceAction& longitudinal_distance_action() const;
  ::osi3::TrafficAction_LongitudinalDistanceAction* release_longitudinal_distance_action();
  ::osi3::TrafficAction_LongitudinalDistanceAction* mutable_longitudinal_distance_action();
  void set_allocated_longitudinal_distance_action(::osi3::TrafficAction_LongitudinalDistanceAction* longitudinal_distance_action);
  private:
  const ::osi3::TrafficAction_LongitudinalDistanceAction& _internal_longitudinal_distance_action() const;
  ::osi3::TrafficAction_LongitudinalDistanceAction* _internal_mutable_longitudinal_distance_action();
  public:
  void unsafe_arena_set_allocated_longitudinal_distance_action(
      ::osi3::TrafficAction_LongitudinalDistanceAction* longitudinal_distance_action);
  ::osi3::TrafficAction_LongitudinalDistanceAction* unsafe_arena_release_longitudinal_distance_action();

  // .osi3.TrafficAction.LaneOffsetAction lane_offset_action = 10;
  bool has_lane_offset_action() const;
  private:
  bool _internal_has_lane_offset_action() const;
  public:
  void clear_lane_offset_action();
  const ::osi3::TrafficAction_LaneOffsetAction& lane_offset_action() const;
  ::osi3::TrafficAction_LaneOffsetAction* release_lane_offset_action();
  ::osi3::TrafficAction_LaneOffsetAction* mutable_lane_offset_action();
  void set_allocated_lane_offset_action(::osi3::TrafficAction_LaneOffsetAction* lane_offset_action);
  private:
  const ::osi3::TrafficAction_LaneOffsetAction& _internal_lane_offset_action() const;
  ::osi3::TrafficAction_LaneOffsetAction* _internal_mutable_lane_offset_action();
  public:
  void unsafe_arena_set_allocated_lane_offset_action(
      ::osi3::TrafficAction_LaneOffsetAction* lane_offset_action);
  ::osi3::TrafficAction_LaneOffsetAction* unsafe_arena_release_lane_offset_action();

  // .osi3.TrafficAction.LateralDistanceAction lateral_distance_action = 11;
  bool has_lateral_distance_action() const;
  private:
  bool _internal_has_lateral_distance_action() const;
  public:
  void clear_lateral_distance_action();
  const ::osi3::TrafficAction_LateralDistanceAction& lateral_distance_action() const;
  ::osi3::TrafficAction_LateralDistanceAction* release_lateral_distance_action();
  ::osi3::TrafficAction_LateralDistanceAction* mutable_lateral_distance_action();
  void set_allocated_lateral_distance_action(::osi3::TrafficAction_LateralDistanceAction* lateral_distance_action);
  private:
  const ::osi3::TrafficAction_LateralDistanceAction& _internal_lateral_distance_action() const;
  ::osi3::TrafficAction_LateralDistanceAction* _internal_mutable_lateral_distance_action();
  public:
  void unsafe_arena_set_allocated_lateral_distance_action(
      ::osi3::TrafficAction_LateralDistanceAction* lateral_distance_action);
  ::osi3::TrafficAction_LateralDistanceAction* unsafe_arena_release_lateral_distance_action();

  // .osi3.TrafficAction.TeleportAction teleport_action = 12;
  bool has_teleport_action() const;
  private:
  bool _internal_has_teleport_action() const;
  public:
  void clear_teleport_action();
  const ::osi3::TrafficAction_TeleportAction& teleport_action() const;
  ::osi3::TrafficAction_TeleportAction* release_teleport_action();
  ::osi3::TrafficAction_TeleportAction* mutable_teleport_action();
  void set_allocated_teleport_action(::osi3::TrafficAction_TeleportAction* teleport_action);
  private:
  const ::osi3::TrafficAction_TeleportAction& _internal_teleport_action() const;
  ::osi3::TrafficAction_TeleportAction* _internal_mutable_teleport_action();
  public:
  void unsafe_arena_set_allocated_teleport_action(
      ::osi3::TrafficAction_TeleportAction* teleport_action);
  ::osi3::TrafficAction_TeleportAction* unsafe_arena_release_teleport_action();

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

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::TrafficAction_FollowTrajectoryAction* follow_trajectory_action_;
  ::osi3::TrafficAction_FollowPathAction* follow_path_action_;
  ::osi3::TrafficAction_AcquireGlobalPositionAction* acquire_global_position_action_;
  ::osi3::TrafficAction_LaneChangeAction* lane_change_action_;
  ::osi3::TrafficAction_SpeedAction* speed_action_;
  ::osi3::TrafficAction_AbortActionsAction* abort_actions_action_;
  ::osi3::TrafficAction_EndActionsAction* end_actions_action_;
  ::osi3::TrafficAction_CustomAction* custom_action_;
  ::osi3::TrafficAction_LongitudinalDistanceAction* longitudinal_distance_action_;
  ::osi3::TrafficAction_LaneOffsetAction* lane_offset_action_;
  ::osi3::TrafficAction_LateralDistanceAction* lateral_distance_action_;
  ::osi3::TrafficAction_TeleportAction* teleport_action_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5ftrafficcommand_2eproto;
};
// ===================================================================


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

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

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

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

// .osi3.Identifier traffic_participant_id = 3;
inline bool TrafficCommand::_internal_has_traffic_participant_id() const {
  return this != internal_default_instance() && traffic_participant_id_ != nullptr;
}
inline bool TrafficCommand::has_traffic_participant_id() const {
  return _internal_has_traffic_participant_id();
}
inline const ::osi3::Identifier& TrafficCommand::_internal_traffic_participant_id() const {
  const ::osi3::Identifier* p = traffic_participant_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& TrafficCommand::traffic_participant_id() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficCommand.traffic_participant_id)
  return _internal_traffic_participant_id();
}
inline void TrafficCommand::unsafe_arena_set_allocated_traffic_participant_id(
    ::osi3::Identifier* traffic_participant_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(traffic_participant_id_);
  }
  traffic_participant_id_ = traffic_participant_id;
  if (traffic_participant_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficCommand.traffic_participant_id)
}
inline ::osi3::Identifier* TrafficCommand::release_traffic_participant_id() {
  
  ::osi3::Identifier* temp = traffic_participant_id_;
  traffic_participant_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* TrafficCommand::unsafe_arena_release_traffic_participant_id() {
  // @@protoc_insertion_point(field_release:osi3.TrafficCommand.traffic_participant_id)
  
  ::osi3::Identifier* temp = traffic_participant_id_;
  traffic_participant_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* TrafficCommand::_internal_mutable_traffic_participant_id() {
  
  if (traffic_participant_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    traffic_participant_id_ = p;
  }
  return traffic_participant_id_;
}
inline ::osi3::Identifier* TrafficCommand::mutable_traffic_participant_id() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficCommand.traffic_participant_id)
  return _internal_mutable_traffic_participant_id();
}
inline void TrafficCommand::set_allocated_traffic_participant_id(::osi3::Identifier* traffic_participant_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(traffic_participant_id_);
  }
  if (traffic_participant_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(traffic_participant_id)->GetArena();
    if (message_arena != submessage_arena) {
      traffic_participant_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, traffic_participant_id, submessage_arena);
    }
    
  } else {
    
  }
  traffic_participant_id_ = traffic_participant_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficCommand.traffic_participant_id)
}

// repeated .osi3.TrafficAction action = 4;
inline int TrafficCommand::_internal_action_size() const {
  return action_.size();
}
inline int TrafficCommand::action_size() const {
  return _internal_action_size();
}
inline void TrafficCommand::clear_action() {
  action_.Clear();
}
inline ::osi3::TrafficAction* TrafficCommand::mutable_action(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficCommand.action)
  return action_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficAction >*
TrafficCommand::mutable_action() {
  // @@protoc_insertion_point(field_mutable_list:osi3.TrafficCommand.action)
  return &action_;
}
inline const ::osi3::TrafficAction& TrafficCommand::_internal_action(int index) const {
  return action_.Get(index);
}
inline const ::osi3::TrafficAction& TrafficCommand::action(int index) const {
  // @@protoc_insertion_point(field_get:osi3.TrafficCommand.action)
  return _internal_action(index);
}
inline ::osi3::TrafficAction* TrafficCommand::_internal_add_action() {
  return action_.Add();
}
inline ::osi3::TrafficAction* TrafficCommand::add_action() {
  // @@protoc_insertion_point(field_add:osi3.TrafficCommand.action)
  return _internal_add_action();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::TrafficAction >&
TrafficCommand::action() const {
  // @@protoc_insertion_point(field_list:osi3.TrafficCommand.action)
  return action_;
}

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

// TrafficAction_ActionHeader

// .osi3.Identifier action_id = 1;
inline bool TrafficAction_ActionHeader::_internal_has_action_id() const {
  return this != internal_default_instance() && action_id_ != nullptr;
}
inline bool TrafficAction_ActionHeader::has_action_id() const {
  return _internal_has_action_id();
}
inline const ::osi3::Identifier& TrafficAction_ActionHeader::_internal_action_id() const {
  const ::osi3::Identifier* p = action_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& TrafficAction_ActionHeader::action_id() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.ActionHeader.action_id)
  return _internal_action_id();
}
inline void TrafficAction_ActionHeader::unsafe_arena_set_allocated_action_id(
    ::osi3::Identifier* action_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_id_);
  }
  action_id_ = action_id;
  if (action_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.ActionHeader.action_id)
}
inline ::osi3::Identifier* TrafficAction_ActionHeader::release_action_id() {
  
  ::osi3::Identifier* temp = action_id_;
  action_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* TrafficAction_ActionHeader::unsafe_arena_release_action_id() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.ActionHeader.action_id)
  
  ::osi3::Identifier* temp = action_id_;
  action_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* TrafficAction_ActionHeader::_internal_mutable_action_id() {
  
  if (action_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    action_id_ = p;
  }
  return action_id_;
}
inline ::osi3::Identifier* TrafficAction_ActionHeader::mutable_action_id() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.ActionHeader.action_id)
  return _internal_mutable_action_id();
}
inline void TrafficAction_ActionHeader::set_allocated_action_id(::osi3::Identifier* action_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_id_);
  }
  if (action_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_id)->GetArena();
    if (message_arena != submessage_arena) {
      action_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_id, submessage_arena);
    }
    
  } else {
    
  }
  action_id_ = action_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.ActionHeader.action_id)
}

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

// TrafficAction_DynamicConstraints

// double max_acceleration = 1;
inline void TrafficAction_DynamicConstraints::clear_max_acceleration() {
  max_acceleration_ = 0;
}
inline double TrafficAction_DynamicConstraints::_internal_max_acceleration() const {
  return max_acceleration_;
}
inline double TrafficAction_DynamicConstraints::max_acceleration() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.DynamicConstraints.max_acceleration)
  return _internal_max_acceleration();
}
inline void TrafficAction_DynamicConstraints::_internal_set_max_acceleration(double value) {
  
  max_acceleration_ = value;
}
inline void TrafficAction_DynamicConstraints::set_max_acceleration(double value) {
  _internal_set_max_acceleration(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.DynamicConstraints.max_acceleration)
}

// double max_deceleration = 2;
inline void TrafficAction_DynamicConstraints::clear_max_deceleration() {
  max_deceleration_ = 0;
}
inline double TrafficAction_DynamicConstraints::_internal_max_deceleration() const {
  return max_deceleration_;
}
inline double TrafficAction_DynamicConstraints::max_deceleration() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.DynamicConstraints.max_deceleration)
  return _internal_max_deceleration();
}
inline void TrafficAction_DynamicConstraints::_internal_set_max_deceleration(double value) {
  
  max_deceleration_ = value;
}
inline void TrafficAction_DynamicConstraints::set_max_deceleration(double value) {
  _internal_set_max_deceleration(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.DynamicConstraints.max_deceleration)
}

// double max_speed = 3;
inline void TrafficAction_DynamicConstraints::clear_max_speed() {
  max_speed_ = 0;
}
inline double TrafficAction_DynamicConstraints::_internal_max_speed() const {
  return max_speed_;
}
inline double TrafficAction_DynamicConstraints::max_speed() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.DynamicConstraints.max_speed)
  return _internal_max_speed();
}
inline void TrafficAction_DynamicConstraints::_internal_set_max_speed(double value) {
  
  max_speed_ = value;
}
inline void TrafficAction_DynamicConstraints::set_max_speed(double value) {
  _internal_set_max_speed(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.DynamicConstraints.max_speed)
}

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

// TrafficAction_FollowTrajectoryAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_FollowTrajectoryAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_FollowTrajectoryAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_FollowTrajectoryAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_FollowTrajectoryAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_FollowTrajectoryAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowTrajectoryAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_FollowTrajectoryAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.FollowTrajectoryAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowTrajectoryAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowTrajectoryAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.FollowTrajectoryAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowTrajectoryAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowTrajectoryAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.FollowTrajectoryAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_FollowTrajectoryAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.FollowTrajectoryAction.action_header)
}

// repeated .osi3.StatePoint trajectory_point = 2;
inline int TrafficAction_FollowTrajectoryAction::_internal_trajectory_point_size() const {
  return trajectory_point_.size();
}
inline int TrafficAction_FollowTrajectoryAction::trajectory_point_size() const {
  return _internal_trajectory_point_size();
}
inline ::osi3::StatePoint* TrafficAction_FollowTrajectoryAction::mutable_trajectory_point(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.FollowTrajectoryAction.trajectory_point)
  return trajectory_point_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
TrafficAction_FollowTrajectoryAction::mutable_trajectory_point() {
  // @@protoc_insertion_point(field_mutable_list:osi3.TrafficAction.FollowTrajectoryAction.trajectory_point)
  return &trajectory_point_;
}
inline const ::osi3::StatePoint& TrafficAction_FollowTrajectoryAction::_internal_trajectory_point(int index) const {
  return trajectory_point_.Get(index);
}
inline const ::osi3::StatePoint& TrafficAction_FollowTrajectoryAction::trajectory_point(int index) const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowTrajectoryAction.trajectory_point)
  return _internal_trajectory_point(index);
}
inline ::osi3::StatePoint* TrafficAction_FollowTrajectoryAction::_internal_add_trajectory_point() {
  return trajectory_point_.Add();
}
inline ::osi3::StatePoint* TrafficAction_FollowTrajectoryAction::add_trajectory_point() {
  // @@protoc_insertion_point(field_add:osi3.TrafficAction.FollowTrajectoryAction.trajectory_point)
  return _internal_add_trajectory_point();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
TrafficAction_FollowTrajectoryAction::trajectory_point() const {
  // @@protoc_insertion_point(field_list:osi3.TrafficAction.FollowTrajectoryAction.trajectory_point)
  return trajectory_point_;
}

// bool constrain_orientation = 3;
inline void TrafficAction_FollowTrajectoryAction::clear_constrain_orientation() {
  constrain_orientation_ = false;
}
inline bool TrafficAction_FollowTrajectoryAction::_internal_constrain_orientation() const {
  return constrain_orientation_;
}
inline bool TrafficAction_FollowTrajectoryAction::constrain_orientation() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowTrajectoryAction.constrain_orientation)
  return _internal_constrain_orientation();
}
inline void TrafficAction_FollowTrajectoryAction::_internal_set_constrain_orientation(bool value) {
  
  constrain_orientation_ = value;
}
inline void TrafficAction_FollowTrajectoryAction::set_constrain_orientation(bool value) {
  _internal_set_constrain_orientation(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.FollowTrajectoryAction.constrain_orientation)
}

// .osi3.TrafficAction.FollowingMode following_mode = 4;
inline void TrafficAction_FollowTrajectoryAction::clear_following_mode() {
  following_mode_ = 0;
}
inline ::osi3::TrafficAction_FollowingMode TrafficAction_FollowTrajectoryAction::_internal_following_mode() const {
  return static_cast< ::osi3::TrafficAction_FollowingMode >(following_mode_);
}
inline ::osi3::TrafficAction_FollowingMode TrafficAction_FollowTrajectoryAction::following_mode() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowTrajectoryAction.following_mode)
  return _internal_following_mode();
}
inline void TrafficAction_FollowTrajectoryAction::_internal_set_following_mode(::osi3::TrafficAction_FollowingMode value) {
  
  following_mode_ = value;
}
inline void TrafficAction_FollowTrajectoryAction::set_following_mode(::osi3::TrafficAction_FollowingMode value) {
  _internal_set_following_mode(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.FollowTrajectoryAction.following_mode)
}

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

// TrafficAction_FollowPathAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_FollowPathAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_FollowPathAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_FollowPathAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_FollowPathAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_FollowPathAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowPathAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_FollowPathAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.FollowPathAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowPathAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowPathAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.FollowPathAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowPathAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_FollowPathAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.FollowPathAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_FollowPathAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.FollowPathAction.action_header)
}

// repeated .osi3.StatePoint path_point = 2;
inline int TrafficAction_FollowPathAction::_internal_path_point_size() const {
  return path_point_.size();
}
inline int TrafficAction_FollowPathAction::path_point_size() const {
  return _internal_path_point_size();
}
inline ::osi3::StatePoint* TrafficAction_FollowPathAction::mutable_path_point(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.FollowPathAction.path_point)
  return path_point_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >*
TrafficAction_FollowPathAction::mutable_path_point() {
  // @@protoc_insertion_point(field_mutable_list:osi3.TrafficAction.FollowPathAction.path_point)
  return &path_point_;
}
inline const ::osi3::StatePoint& TrafficAction_FollowPathAction::_internal_path_point(int index) const {
  return path_point_.Get(index);
}
inline const ::osi3::StatePoint& TrafficAction_FollowPathAction::path_point(int index) const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowPathAction.path_point)
  return _internal_path_point(index);
}
inline ::osi3::StatePoint* TrafficAction_FollowPathAction::_internal_add_path_point() {
  return path_point_.Add();
}
inline ::osi3::StatePoint* TrafficAction_FollowPathAction::add_path_point() {
  // @@protoc_insertion_point(field_add:osi3.TrafficAction.FollowPathAction.path_point)
  return _internal_add_path_point();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::StatePoint >&
TrafficAction_FollowPathAction::path_point() const {
  // @@protoc_insertion_point(field_list:osi3.TrafficAction.FollowPathAction.path_point)
  return path_point_;
}

// bool constrain_orientation = 3;
inline void TrafficAction_FollowPathAction::clear_constrain_orientation() {
  constrain_orientation_ = false;
}
inline bool TrafficAction_FollowPathAction::_internal_constrain_orientation() const {
  return constrain_orientation_;
}
inline bool TrafficAction_FollowPathAction::constrain_orientation() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowPathAction.constrain_orientation)
  return _internal_constrain_orientation();
}
inline void TrafficAction_FollowPathAction::_internal_set_constrain_orientation(bool value) {
  
  constrain_orientation_ = value;
}
inline void TrafficAction_FollowPathAction::set_constrain_orientation(bool value) {
  _internal_set_constrain_orientation(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.FollowPathAction.constrain_orientation)
}

// .osi3.TrafficAction.FollowingMode following_mode = 4;
inline void TrafficAction_FollowPathAction::clear_following_mode() {
  following_mode_ = 0;
}
inline ::osi3::TrafficAction_FollowingMode TrafficAction_FollowPathAction::_internal_following_mode() const {
  return static_cast< ::osi3::TrafficAction_FollowingMode >(following_mode_);
}
inline ::osi3::TrafficAction_FollowingMode TrafficAction_FollowPathAction::following_mode() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.FollowPathAction.following_mode)
  return _internal_following_mode();
}
inline void TrafficAction_FollowPathAction::_internal_set_following_mode(::osi3::TrafficAction_FollowingMode value) {
  
  following_mode_ = value;
}
inline void TrafficAction_FollowPathAction::set_following_mode(::osi3::TrafficAction_FollowingMode value) {
  _internal_set_following_mode(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.FollowPathAction.following_mode)
}

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

// TrafficAction_AcquireGlobalPositionAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_AcquireGlobalPositionAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_AcquireGlobalPositionAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_AcquireGlobalPositionAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_AcquireGlobalPositionAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_AcquireGlobalPositionAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.AcquireGlobalPositionAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_AcquireGlobalPositionAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.AcquireGlobalPositionAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AcquireGlobalPositionAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AcquireGlobalPositionAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.AcquireGlobalPositionAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AcquireGlobalPositionAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AcquireGlobalPositionAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.AcquireGlobalPositionAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_AcquireGlobalPositionAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.AcquireGlobalPositionAction.action_header)
}

// .osi3.Vector3d position = 2;
inline bool TrafficAction_AcquireGlobalPositionAction::_internal_has_position() const {
  return this != internal_default_instance() && position_ != nullptr;
}
inline bool TrafficAction_AcquireGlobalPositionAction::has_position() const {
  return _internal_has_position();
}
inline const ::osi3::Vector3d& TrafficAction_AcquireGlobalPositionAction::_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& TrafficAction_AcquireGlobalPositionAction::position() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.AcquireGlobalPositionAction.position)
  return _internal_position();
}
inline void TrafficAction_AcquireGlobalPositionAction::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.TrafficAction.AcquireGlobalPositionAction.position)
}
inline ::osi3::Vector3d* TrafficAction_AcquireGlobalPositionAction::release_position() {
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Vector3d* TrafficAction_AcquireGlobalPositionAction::unsafe_arena_release_position() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.AcquireGlobalPositionAction.position)
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  return temp;
}
inline ::osi3::Vector3d* TrafficAction_AcquireGlobalPositionAction::_internal_mutable_position() {
  
  if (position_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Vector3d>(GetArena());
    position_ = p;
  }
  return position_;
}
inline ::osi3::Vector3d* TrafficAction_AcquireGlobalPositionAction::mutable_position() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.AcquireGlobalPositionAction.position)
  return _internal_mutable_position();
}
inline void TrafficAction_AcquireGlobalPositionAction::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.TrafficAction.AcquireGlobalPositionAction.position)
}

// .osi3.Orientation3d orientation = 3;
inline bool TrafficAction_AcquireGlobalPositionAction::_internal_has_orientation() const {
  return this != internal_default_instance() && orientation_ != nullptr;
}
inline bool TrafficAction_AcquireGlobalPositionAction::has_orientation() const {
  return _internal_has_orientation();
}
inline const ::osi3::Orientation3d& TrafficAction_AcquireGlobalPositionAction::_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& TrafficAction_AcquireGlobalPositionAction::orientation() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.AcquireGlobalPositionAction.orientation)
  return _internal_orientation();
}
inline void TrafficAction_AcquireGlobalPositionAction::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.TrafficAction.AcquireGlobalPositionAction.orientation)
}
inline ::osi3::Orientation3d* TrafficAction_AcquireGlobalPositionAction::release_orientation() {
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Orientation3d* TrafficAction_AcquireGlobalPositionAction::unsafe_arena_release_orientation() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.AcquireGlobalPositionAction.orientation)
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  return temp;
}
inline ::osi3::Orientation3d* TrafficAction_AcquireGlobalPositionAction::_internal_mutable_orientation() {
  
  if (orientation_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Orientation3d>(GetArena());
    orientation_ = p;
  }
  return orientation_;
}
inline ::osi3::Orientation3d* TrafficAction_AcquireGlobalPositionAction::mutable_orientation() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.AcquireGlobalPositionAction.orientation)
  return _internal_mutable_orientation();
}
inline void TrafficAction_AcquireGlobalPositionAction::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.TrafficAction.AcquireGlobalPositionAction.orientation)
}

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

// TrafficAction_LaneChangeAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_LaneChangeAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_LaneChangeAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_LaneChangeAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LaneChangeAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LaneChangeAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneChangeAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_LaneChangeAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LaneChangeAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneChangeAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneChangeAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LaneChangeAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneChangeAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneChangeAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LaneChangeAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_LaneChangeAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LaneChangeAction.action_header)
}

// int32 relative_target_lane = 2;
inline void TrafficAction_LaneChangeAction::clear_relative_target_lane() {
  relative_target_lane_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 TrafficAction_LaneChangeAction::_internal_relative_target_lane() const {
  return relative_target_lane_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 TrafficAction_LaneChangeAction::relative_target_lane() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneChangeAction.relative_target_lane)
  return _internal_relative_target_lane();
}
inline void TrafficAction_LaneChangeAction::_internal_set_relative_target_lane(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  relative_target_lane_ = value;
}
inline void TrafficAction_LaneChangeAction::set_relative_target_lane(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_relative_target_lane(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneChangeAction.relative_target_lane)
}

// .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
inline void TrafficAction_LaneChangeAction::clear_dynamics_shape() {
  dynamics_shape_ = 0;
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_LaneChangeAction::_internal_dynamics_shape() const {
  return static_cast< ::osi3::TrafficAction_DynamicsShape >(dynamics_shape_);
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_LaneChangeAction::dynamics_shape() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneChangeAction.dynamics_shape)
  return _internal_dynamics_shape();
}
inline void TrafficAction_LaneChangeAction::_internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  
  dynamics_shape_ = value;
}
inline void TrafficAction_LaneChangeAction::set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  _internal_set_dynamics_shape(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneChangeAction.dynamics_shape)
}

// double duration = 4;
inline void TrafficAction_LaneChangeAction::clear_duration() {
  duration_ = 0;
}
inline double TrafficAction_LaneChangeAction::_internal_duration() const {
  return duration_;
}
inline double TrafficAction_LaneChangeAction::duration() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneChangeAction.duration)
  return _internal_duration();
}
inline void TrafficAction_LaneChangeAction::_internal_set_duration(double value) {
  
  duration_ = value;
}
inline void TrafficAction_LaneChangeAction::set_duration(double value) {
  _internal_set_duration(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneChangeAction.duration)
}

// double distance = 5;
inline void TrafficAction_LaneChangeAction::clear_distance() {
  distance_ = 0;
}
inline double TrafficAction_LaneChangeAction::_internal_distance() const {
  return distance_;
}
inline double TrafficAction_LaneChangeAction::distance() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneChangeAction.distance)
  return _internal_distance();
}
inline void TrafficAction_LaneChangeAction::_internal_set_distance(double value) {
  
  distance_ = value;
}
inline void TrafficAction_LaneChangeAction::set_distance(double value) {
  _internal_set_distance(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneChangeAction.distance)
}

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

// TrafficAction_SpeedAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_SpeedAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_SpeedAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_SpeedAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_SpeedAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_SpeedAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.SpeedAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_SpeedAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.SpeedAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_SpeedAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_SpeedAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.SpeedAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_SpeedAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_SpeedAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.SpeedAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_SpeedAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.SpeedAction.action_header)
}

// double absolute_target_speed = 2;
inline void TrafficAction_SpeedAction::clear_absolute_target_speed() {
  absolute_target_speed_ = 0;
}
inline double TrafficAction_SpeedAction::_internal_absolute_target_speed() const {
  return absolute_target_speed_;
}
inline double TrafficAction_SpeedAction::absolute_target_speed() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.SpeedAction.absolute_target_speed)
  return _internal_absolute_target_speed();
}
inline void TrafficAction_SpeedAction::_internal_set_absolute_target_speed(double value) {
  
  absolute_target_speed_ = value;
}
inline void TrafficAction_SpeedAction::set_absolute_target_speed(double value) {
  _internal_set_absolute_target_speed(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.SpeedAction.absolute_target_speed)
}

// .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
inline void TrafficAction_SpeedAction::clear_dynamics_shape() {
  dynamics_shape_ = 0;
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_SpeedAction::_internal_dynamics_shape() const {
  return static_cast< ::osi3::TrafficAction_DynamicsShape >(dynamics_shape_);
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_SpeedAction::dynamics_shape() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.SpeedAction.dynamics_shape)
  return _internal_dynamics_shape();
}
inline void TrafficAction_SpeedAction::_internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  
  dynamics_shape_ = value;
}
inline void TrafficAction_SpeedAction::set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  _internal_set_dynamics_shape(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.SpeedAction.dynamics_shape)
}

// double duration = 4;
inline void TrafficAction_SpeedAction::clear_duration() {
  duration_ = 0;
}
inline double TrafficAction_SpeedAction::_internal_duration() const {
  return duration_;
}
inline double TrafficAction_SpeedAction::duration() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.SpeedAction.duration)
  return _internal_duration();
}
inline void TrafficAction_SpeedAction::_internal_set_duration(double value) {
  
  duration_ = value;
}
inline void TrafficAction_SpeedAction::set_duration(double value) {
  _internal_set_duration(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.SpeedAction.duration)
}

// double distance = 5;
inline void TrafficAction_SpeedAction::clear_distance() {
  distance_ = 0;
}
inline double TrafficAction_SpeedAction::_internal_distance() const {
  return distance_;
}
inline double TrafficAction_SpeedAction::distance() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.SpeedAction.distance)
  return _internal_distance();
}
inline void TrafficAction_SpeedAction::_internal_set_distance(double value) {
  
  distance_ = value;
}
inline void TrafficAction_SpeedAction::set_distance(double value) {
  _internal_set_distance(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.SpeedAction.distance)
}

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

// TrafficAction_AbortActionsAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_AbortActionsAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_AbortActionsAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_AbortActionsAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_AbortActionsAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_AbortActionsAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.AbortActionsAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_AbortActionsAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.AbortActionsAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AbortActionsAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AbortActionsAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.AbortActionsAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AbortActionsAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_AbortActionsAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.AbortActionsAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_AbortActionsAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.AbortActionsAction.action_header)
}

// repeated .osi3.Identifier target_action_id = 2;
inline int TrafficAction_AbortActionsAction::_internal_target_action_id_size() const {
  return target_action_id_.size();
}
inline int TrafficAction_AbortActionsAction::target_action_id_size() const {
  return _internal_target_action_id_size();
}
inline ::osi3::Identifier* TrafficAction_AbortActionsAction::mutable_target_action_id(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.AbortActionsAction.target_action_id)
  return target_action_id_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
TrafficAction_AbortActionsAction::mutable_target_action_id() {
  // @@protoc_insertion_point(field_mutable_list:osi3.TrafficAction.AbortActionsAction.target_action_id)
  return &target_action_id_;
}
inline const ::osi3::Identifier& TrafficAction_AbortActionsAction::_internal_target_action_id(int index) const {
  return target_action_id_.Get(index);
}
inline const ::osi3::Identifier& TrafficAction_AbortActionsAction::target_action_id(int index) const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.AbortActionsAction.target_action_id)
  return _internal_target_action_id(index);
}
inline ::osi3::Identifier* TrafficAction_AbortActionsAction::_internal_add_target_action_id() {
  return target_action_id_.Add();
}
inline ::osi3::Identifier* TrafficAction_AbortActionsAction::add_target_action_id() {
  // @@protoc_insertion_point(field_add:osi3.TrafficAction.AbortActionsAction.target_action_id)
  return _internal_add_target_action_id();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
TrafficAction_AbortActionsAction::target_action_id() const {
  // @@protoc_insertion_point(field_list:osi3.TrafficAction.AbortActionsAction.target_action_id)
  return target_action_id_;
}

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

// TrafficAction_EndActionsAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_EndActionsAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_EndActionsAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_EndActionsAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_EndActionsAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_EndActionsAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.EndActionsAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_EndActionsAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.EndActionsAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_EndActionsAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_EndActionsAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.EndActionsAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_EndActionsAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_EndActionsAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.EndActionsAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_EndActionsAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.EndActionsAction.action_header)
}

// repeated .osi3.Identifier target_action_id = 2;
inline int TrafficAction_EndActionsAction::_internal_target_action_id_size() const {
  return target_action_id_.size();
}
inline int TrafficAction_EndActionsAction::target_action_id_size() const {
  return _internal_target_action_id_size();
}
inline ::osi3::Identifier* TrafficAction_EndActionsAction::mutable_target_action_id(int index) {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.EndActionsAction.target_action_id)
  return target_action_id_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >*
TrafficAction_EndActionsAction::mutable_target_action_id() {
  // @@protoc_insertion_point(field_mutable_list:osi3.TrafficAction.EndActionsAction.target_action_id)
  return &target_action_id_;
}
inline const ::osi3::Identifier& TrafficAction_EndActionsAction::_internal_target_action_id(int index) const {
  return target_action_id_.Get(index);
}
inline const ::osi3::Identifier& TrafficAction_EndActionsAction::target_action_id(int index) const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.EndActionsAction.target_action_id)
  return _internal_target_action_id(index);
}
inline ::osi3::Identifier* TrafficAction_EndActionsAction::_internal_add_target_action_id() {
  return target_action_id_.Add();
}
inline ::osi3::Identifier* TrafficAction_EndActionsAction::add_target_action_id() {
  // @@protoc_insertion_point(field_add:osi3.TrafficAction.EndActionsAction.target_action_id)
  return _internal_add_target_action_id();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::osi3::Identifier >&
TrafficAction_EndActionsAction::target_action_id() const {
  // @@protoc_insertion_point(field_list:osi3.TrafficAction.EndActionsAction.target_action_id)
  return target_action_id_;
}

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

// TrafficAction_CustomAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_CustomAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_CustomAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_CustomAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_CustomAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_CustomAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.CustomAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_CustomAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.CustomAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_CustomAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_CustomAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.CustomAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_CustomAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_CustomAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.CustomAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_CustomAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.CustomAction.action_header)
}

// string command = 2;
inline void TrafficAction_CustomAction::clear_command() {
  command_.ClearToEmpty();
}
inline const std::string& TrafficAction_CustomAction::command() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.CustomAction.command)
  return _internal_command();
}
inline void TrafficAction_CustomAction::set_command(const std::string& value) {
  _internal_set_command(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.CustomAction.command)
}
inline std::string* TrafficAction_CustomAction::mutable_command() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.CustomAction.command)
  return _internal_mutable_command();
}
inline const std::string& TrafficAction_CustomAction::_internal_command() const {
  return command_.Get();
}
inline void TrafficAction_CustomAction::_internal_set_command(const std::string& value) {
  
  command_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArena());
}
inline void TrafficAction_CustomAction::set_command(std::string&& value) {
  
  command_.Set(
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:osi3.TrafficAction.CustomAction.command)
}
inline void TrafficAction_CustomAction::set_command(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  command_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(value), GetArena());
  // @@protoc_insertion_point(field_set_char:osi3.TrafficAction.CustomAction.command)
}
inline void TrafficAction_CustomAction::set_command(const char* value,
    size_t size) {
  
  command_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:osi3.TrafficAction.CustomAction.command)
}
inline std::string* TrafficAction_CustomAction::_internal_mutable_command() {
  
  return command_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArena());
}
inline std::string* TrafficAction_CustomAction::release_command() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.CustomAction.command)
  return command_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void TrafficAction_CustomAction::set_allocated_command(std::string* command) {
  if (command != nullptr) {
    
  } else {
    
  }
  command_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), command,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.CustomAction.command)
}

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

// TrafficAction_LongitudinalDistanceAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_LongitudinalDistanceAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_LongitudinalDistanceAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_LongitudinalDistanceAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LongitudinalDistanceAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LongitudinalDistanceAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_LongitudinalDistanceAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LongitudinalDistanceAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LongitudinalDistanceAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LongitudinalDistanceAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LongitudinalDistanceAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LongitudinalDistanceAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LongitudinalDistanceAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_LongitudinalDistanceAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.action_header)
}

// .osi3.Identifier target_traffic_participant_id = 2;
inline bool TrafficAction_LongitudinalDistanceAction::_internal_has_target_traffic_participant_id() const {
  return this != internal_default_instance() && target_traffic_participant_id_ != nullptr;
}
inline bool TrafficAction_LongitudinalDistanceAction::has_target_traffic_participant_id() const {
  return _internal_has_target_traffic_participant_id();
}
inline const ::osi3::Identifier& TrafficAction_LongitudinalDistanceAction::_internal_target_traffic_participant_id() const {
  const ::osi3::Identifier* p = target_traffic_participant_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& TrafficAction_LongitudinalDistanceAction::target_traffic_participant_id() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.target_traffic_participant_id)
  return _internal_target_traffic_participant_id();
}
inline void TrafficAction_LongitudinalDistanceAction::unsafe_arena_set_allocated_target_traffic_participant_id(
    ::osi3::Identifier* target_traffic_participant_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id_);
  }
  target_traffic_participant_id_ = target_traffic_participant_id;
  if (target_traffic_participant_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.target_traffic_participant_id)
}
inline ::osi3::Identifier* TrafficAction_LongitudinalDistanceAction::release_target_traffic_participant_id() {
  
  ::osi3::Identifier* temp = target_traffic_participant_id_;
  target_traffic_participant_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* TrafficAction_LongitudinalDistanceAction::unsafe_arena_release_target_traffic_participant_id() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LongitudinalDistanceAction.target_traffic_participant_id)
  
  ::osi3::Identifier* temp = target_traffic_participant_id_;
  target_traffic_participant_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* TrafficAction_LongitudinalDistanceAction::_internal_mutable_target_traffic_participant_id() {
  
  if (target_traffic_participant_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    target_traffic_participant_id_ = p;
  }
  return target_traffic_participant_id_;
}
inline ::osi3::Identifier* TrafficAction_LongitudinalDistanceAction::mutable_target_traffic_participant_id() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LongitudinalDistanceAction.target_traffic_participant_id)
  return _internal_mutable_target_traffic_participant_id();
}
inline void TrafficAction_LongitudinalDistanceAction::set_allocated_target_traffic_participant_id(::osi3::Identifier* target_traffic_participant_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id_);
  }
  if (target_traffic_participant_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id)->GetArena();
    if (message_arena != submessage_arena) {
      target_traffic_participant_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, target_traffic_participant_id, submessage_arena);
    }
    
  } else {
    
  }
  target_traffic_participant_id_ = target_traffic_participant_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.target_traffic_participant_id)
}

// double distance = 3;
inline void TrafficAction_LongitudinalDistanceAction::clear_distance() {
  distance_ = 0;
}
inline double TrafficAction_LongitudinalDistanceAction::_internal_distance() const {
  return distance_;
}
inline double TrafficAction_LongitudinalDistanceAction::distance() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.distance)
  return _internal_distance();
}
inline void TrafficAction_LongitudinalDistanceAction::_internal_set_distance(double value) {
  
  distance_ = value;
}
inline void TrafficAction_LongitudinalDistanceAction::set_distance(double value) {
  _internal_set_distance(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LongitudinalDistanceAction.distance)
}

// bool freespace = 4;
inline void TrafficAction_LongitudinalDistanceAction::clear_freespace() {
  freespace_ = false;
}
inline bool TrafficAction_LongitudinalDistanceAction::_internal_freespace() const {
  return freespace_;
}
inline bool TrafficAction_LongitudinalDistanceAction::freespace() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.freespace)
  return _internal_freespace();
}
inline void TrafficAction_LongitudinalDistanceAction::_internal_set_freespace(bool value) {
  
  freespace_ = value;
}
inline void TrafficAction_LongitudinalDistanceAction::set_freespace(bool value) {
  _internal_set_freespace(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LongitudinalDistanceAction.freespace)
}

// bool follow = 5;
inline void TrafficAction_LongitudinalDistanceAction::clear_follow() {
  follow_ = false;
}
inline bool TrafficAction_LongitudinalDistanceAction::_internal_follow() const {
  return follow_;
}
inline bool TrafficAction_LongitudinalDistanceAction::follow() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.follow)
  return _internal_follow();
}
inline void TrafficAction_LongitudinalDistanceAction::_internal_set_follow(bool value) {
  
  follow_ = value;
}
inline void TrafficAction_LongitudinalDistanceAction::set_follow(bool value) {
  _internal_set_follow(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LongitudinalDistanceAction.follow)
}

// .osi3.TrafficAction.DynamicConstraints dynamic_constraints = 6;
inline bool TrafficAction_LongitudinalDistanceAction::_internal_has_dynamic_constraints() const {
  return this != internal_default_instance() && dynamic_constraints_ != nullptr;
}
inline bool TrafficAction_LongitudinalDistanceAction::has_dynamic_constraints() const {
  return _internal_has_dynamic_constraints();
}
inline void TrafficAction_LongitudinalDistanceAction::clear_dynamic_constraints() {
  if (GetArena() == nullptr && dynamic_constraints_ != nullptr) {
    delete dynamic_constraints_;
  }
  dynamic_constraints_ = nullptr;
}
inline const ::osi3::TrafficAction_DynamicConstraints& TrafficAction_LongitudinalDistanceAction::_internal_dynamic_constraints() const {
  const ::osi3::TrafficAction_DynamicConstraints* p = dynamic_constraints_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_DynamicConstraints&>(
      ::osi3::_TrafficAction_DynamicConstraints_default_instance_);
}
inline const ::osi3::TrafficAction_DynamicConstraints& TrafficAction_LongitudinalDistanceAction::dynamic_constraints() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LongitudinalDistanceAction.dynamic_constraints)
  return _internal_dynamic_constraints();
}
inline void TrafficAction_LongitudinalDistanceAction::unsafe_arena_set_allocated_dynamic_constraints(
    ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(dynamic_constraints_);
  }
  dynamic_constraints_ = dynamic_constraints;
  if (dynamic_constraints) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.dynamic_constraints)
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LongitudinalDistanceAction::release_dynamic_constraints() {
  
  ::osi3::TrafficAction_DynamicConstraints* temp = dynamic_constraints_;
  dynamic_constraints_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LongitudinalDistanceAction::unsafe_arena_release_dynamic_constraints() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LongitudinalDistanceAction.dynamic_constraints)
  
  ::osi3::TrafficAction_DynamicConstraints* temp = dynamic_constraints_;
  dynamic_constraints_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LongitudinalDistanceAction::_internal_mutable_dynamic_constraints() {
  
  if (dynamic_constraints_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_DynamicConstraints>(GetArena());
    dynamic_constraints_ = p;
  }
  return dynamic_constraints_;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LongitudinalDistanceAction::mutable_dynamic_constraints() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LongitudinalDistanceAction.dynamic_constraints)
  return _internal_mutable_dynamic_constraints();
}
inline void TrafficAction_LongitudinalDistanceAction::set_allocated_dynamic_constraints(::osi3::TrafficAction_DynamicConstraints* dynamic_constraints) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete dynamic_constraints_;
  }
  if (dynamic_constraints) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(dynamic_constraints);
    if (message_arena != submessage_arena) {
      dynamic_constraints = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, dynamic_constraints, submessage_arena);
    }
    
  } else {
    
  }
  dynamic_constraints_ = dynamic_constraints;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LongitudinalDistanceAction.dynamic_constraints)
}

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

// TrafficAction_LateralDistanceAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_LateralDistanceAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_LateralDistanceAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_LateralDistanceAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LateralDistanceAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LateralDistanceAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_LateralDistanceAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LateralDistanceAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LateralDistanceAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LateralDistanceAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LateralDistanceAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LateralDistanceAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LateralDistanceAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LateralDistanceAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_LateralDistanceAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LateralDistanceAction.action_header)
}

// .osi3.Identifier target_traffic_participant_id = 2;
inline bool TrafficAction_LateralDistanceAction::_internal_has_target_traffic_participant_id() const {
  return this != internal_default_instance() && target_traffic_participant_id_ != nullptr;
}
inline bool TrafficAction_LateralDistanceAction::has_target_traffic_participant_id() const {
  return _internal_has_target_traffic_participant_id();
}
inline const ::osi3::Identifier& TrafficAction_LateralDistanceAction::_internal_target_traffic_participant_id() const {
  const ::osi3::Identifier* p = target_traffic_participant_id_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::Identifier&>(
      ::osi3::_Identifier_default_instance_);
}
inline const ::osi3::Identifier& TrafficAction_LateralDistanceAction::target_traffic_participant_id() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.target_traffic_participant_id)
  return _internal_target_traffic_participant_id();
}
inline void TrafficAction_LateralDistanceAction::unsafe_arena_set_allocated_target_traffic_participant_id(
    ::osi3::Identifier* target_traffic_participant_id) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id_);
  }
  target_traffic_participant_id_ = target_traffic_participant_id;
  if (target_traffic_participant_id) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LateralDistanceAction.target_traffic_participant_id)
}
inline ::osi3::Identifier* TrafficAction_LateralDistanceAction::release_target_traffic_participant_id() {
  
  ::osi3::Identifier* temp = target_traffic_participant_id_;
  target_traffic_participant_id_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Identifier* TrafficAction_LateralDistanceAction::unsafe_arena_release_target_traffic_participant_id() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LateralDistanceAction.target_traffic_participant_id)
  
  ::osi3::Identifier* temp = target_traffic_participant_id_;
  target_traffic_participant_id_ = nullptr;
  return temp;
}
inline ::osi3::Identifier* TrafficAction_LateralDistanceAction::_internal_mutable_target_traffic_participant_id() {
  
  if (target_traffic_participant_id_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Identifier>(GetArena());
    target_traffic_participant_id_ = p;
  }
  return target_traffic_participant_id_;
}
inline ::osi3::Identifier* TrafficAction_LateralDistanceAction::mutable_target_traffic_participant_id() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LateralDistanceAction.target_traffic_participant_id)
  return _internal_mutable_target_traffic_participant_id();
}
inline void TrafficAction_LateralDistanceAction::set_allocated_target_traffic_participant_id(::osi3::Identifier* target_traffic_participant_id) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete reinterpret_cast< ::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id_);
  }
  if (target_traffic_participant_id) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(target_traffic_participant_id)->GetArena();
    if (message_arena != submessage_arena) {
      target_traffic_participant_id = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, target_traffic_participant_id, submessage_arena);
    }
    
  } else {
    
  }
  target_traffic_participant_id_ = target_traffic_participant_id;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LateralDistanceAction.target_traffic_participant_id)
}

// double distance = 3;
inline void TrafficAction_LateralDistanceAction::clear_distance() {
  distance_ = 0;
}
inline double TrafficAction_LateralDistanceAction::_internal_distance() const {
  return distance_;
}
inline double TrafficAction_LateralDistanceAction::distance() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.distance)
  return _internal_distance();
}
inline void TrafficAction_LateralDistanceAction::_internal_set_distance(double value) {
  
  distance_ = value;
}
inline void TrafficAction_LateralDistanceAction::set_distance(double value) {
  _internal_set_distance(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LateralDistanceAction.distance)
}

// bool freespace = 4;
inline void TrafficAction_LateralDistanceAction::clear_freespace() {
  freespace_ = false;
}
inline bool TrafficAction_LateralDistanceAction::_internal_freespace() const {
  return freespace_;
}
inline bool TrafficAction_LateralDistanceAction::freespace() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.freespace)
  return _internal_freespace();
}
inline void TrafficAction_LateralDistanceAction::_internal_set_freespace(bool value) {
  
  freespace_ = value;
}
inline void TrafficAction_LateralDistanceAction::set_freespace(bool value) {
  _internal_set_freespace(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LateralDistanceAction.freespace)
}

// bool follow = 5;
inline void TrafficAction_LateralDistanceAction::clear_follow() {
  follow_ = false;
}
inline bool TrafficAction_LateralDistanceAction::_internal_follow() const {
  return follow_;
}
inline bool TrafficAction_LateralDistanceAction::follow() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.follow)
  return _internal_follow();
}
inline void TrafficAction_LateralDistanceAction::_internal_set_follow(bool value) {
  
  follow_ = value;
}
inline void TrafficAction_LateralDistanceAction::set_follow(bool value) {
  _internal_set_follow(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LateralDistanceAction.follow)
}

// .osi3.TrafficAction.DynamicConstraints dynamic_constraints = 6;
inline bool TrafficAction_LateralDistanceAction::_internal_has_dynamic_constraints() const {
  return this != internal_default_instance() && dynamic_constraints_ != nullptr;
}
inline bool TrafficAction_LateralDistanceAction::has_dynamic_constraints() const {
  return _internal_has_dynamic_constraints();
}
inline void TrafficAction_LateralDistanceAction::clear_dynamic_constraints() {
  if (GetArena() == nullptr && dynamic_constraints_ != nullptr) {
    delete dynamic_constraints_;
  }
  dynamic_constraints_ = nullptr;
}
inline const ::osi3::TrafficAction_DynamicConstraints& TrafficAction_LateralDistanceAction::_internal_dynamic_constraints() const {
  const ::osi3::TrafficAction_DynamicConstraints* p = dynamic_constraints_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_DynamicConstraints&>(
      ::osi3::_TrafficAction_DynamicConstraints_default_instance_);
}
inline const ::osi3::TrafficAction_DynamicConstraints& TrafficAction_LateralDistanceAction::dynamic_constraints() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LateralDistanceAction.dynamic_constraints)
  return _internal_dynamic_constraints();
}
inline void TrafficAction_LateralDistanceAction::unsafe_arena_set_allocated_dynamic_constraints(
    ::osi3::TrafficAction_DynamicConstraints* dynamic_constraints) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(dynamic_constraints_);
  }
  dynamic_constraints_ = dynamic_constraints;
  if (dynamic_constraints) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LateralDistanceAction.dynamic_constraints)
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LateralDistanceAction::release_dynamic_constraints() {
  
  ::osi3::TrafficAction_DynamicConstraints* temp = dynamic_constraints_;
  dynamic_constraints_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LateralDistanceAction::unsafe_arena_release_dynamic_constraints() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LateralDistanceAction.dynamic_constraints)
  
  ::osi3::TrafficAction_DynamicConstraints* temp = dynamic_constraints_;
  dynamic_constraints_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LateralDistanceAction::_internal_mutable_dynamic_constraints() {
  
  if (dynamic_constraints_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_DynamicConstraints>(GetArena());
    dynamic_constraints_ = p;
  }
  return dynamic_constraints_;
}
inline ::osi3::TrafficAction_DynamicConstraints* TrafficAction_LateralDistanceAction::mutable_dynamic_constraints() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LateralDistanceAction.dynamic_constraints)
  return _internal_mutable_dynamic_constraints();
}
inline void TrafficAction_LateralDistanceAction::set_allocated_dynamic_constraints(::osi3::TrafficAction_DynamicConstraints* dynamic_constraints) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete dynamic_constraints_;
  }
  if (dynamic_constraints) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(dynamic_constraints);
    if (message_arena != submessage_arena) {
      dynamic_constraints = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, dynamic_constraints, submessage_arena);
    }
    
  } else {
    
  }
  dynamic_constraints_ = dynamic_constraints;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LateralDistanceAction.dynamic_constraints)
}

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

// TrafficAction_LaneOffsetAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_LaneOffsetAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_LaneOffsetAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_LaneOffsetAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LaneOffsetAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_LaneOffsetAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneOffsetAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_LaneOffsetAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.LaneOffsetAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneOffsetAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneOffsetAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.LaneOffsetAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneOffsetAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_LaneOffsetAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.LaneOffsetAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_LaneOffsetAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.LaneOffsetAction.action_header)
}

// double target_lane_offset = 2;
inline void TrafficAction_LaneOffsetAction::clear_target_lane_offset() {
  target_lane_offset_ = 0;
}
inline double TrafficAction_LaneOffsetAction::_internal_target_lane_offset() const {
  return target_lane_offset_;
}
inline double TrafficAction_LaneOffsetAction::target_lane_offset() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneOffsetAction.target_lane_offset)
  return _internal_target_lane_offset();
}
inline void TrafficAction_LaneOffsetAction::_internal_set_target_lane_offset(double value) {
  
  target_lane_offset_ = value;
}
inline void TrafficAction_LaneOffsetAction::set_target_lane_offset(double value) {
  _internal_set_target_lane_offset(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneOffsetAction.target_lane_offset)
}

// .osi3.TrafficAction.DynamicsShape dynamics_shape = 3;
inline void TrafficAction_LaneOffsetAction::clear_dynamics_shape() {
  dynamics_shape_ = 0;
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_LaneOffsetAction::_internal_dynamics_shape() const {
  return static_cast< ::osi3::TrafficAction_DynamicsShape >(dynamics_shape_);
}
inline ::osi3::TrafficAction_DynamicsShape TrafficAction_LaneOffsetAction::dynamics_shape() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.LaneOffsetAction.dynamics_shape)
  return _internal_dynamics_shape();
}
inline void TrafficAction_LaneOffsetAction::_internal_set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  
  dynamics_shape_ = value;
}
inline void TrafficAction_LaneOffsetAction::set_dynamics_shape(::osi3::TrafficAction_DynamicsShape value) {
  _internal_set_dynamics_shape(value);
  // @@protoc_insertion_point(field_set:osi3.TrafficAction.LaneOffsetAction.dynamics_shape)
}

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

// TrafficAction_TeleportAction

// .osi3.TrafficAction.ActionHeader action_header = 1;
inline bool TrafficAction_TeleportAction::_internal_has_action_header() const {
  return this != internal_default_instance() && action_header_ != nullptr;
}
inline bool TrafficAction_TeleportAction::has_action_header() const {
  return _internal_has_action_header();
}
inline void TrafficAction_TeleportAction::clear_action_header() {
  if (GetArena() == nullptr && action_header_ != nullptr) {
    delete action_header_;
  }
  action_header_ = nullptr;
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_TeleportAction::_internal_action_header() const {
  const ::osi3::TrafficAction_ActionHeader* p = action_header_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_ActionHeader&>(
      ::osi3::_TrafficAction_ActionHeader_default_instance_);
}
inline const ::osi3::TrafficAction_ActionHeader& TrafficAction_TeleportAction::action_header() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.TeleportAction.action_header)
  return _internal_action_header();
}
inline void TrafficAction_TeleportAction::unsafe_arena_set_allocated_action_header(
    ::osi3::TrafficAction_ActionHeader* action_header) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(action_header_);
  }
  action_header_ = action_header;
  if (action_header) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.TeleportAction.action_header)
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_TeleportAction::release_action_header() {
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_TeleportAction::unsafe_arena_release_action_header() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.TeleportAction.action_header)
  
  ::osi3::TrafficAction_ActionHeader* temp = action_header_;
  action_header_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_TeleportAction::_internal_mutable_action_header() {
  
  if (action_header_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_ActionHeader>(GetArena());
    action_header_ = p;
  }
  return action_header_;
}
inline ::osi3::TrafficAction_ActionHeader* TrafficAction_TeleportAction::mutable_action_header() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.TeleportAction.action_header)
  return _internal_mutable_action_header();
}
inline void TrafficAction_TeleportAction::set_allocated_action_header(::osi3::TrafficAction_ActionHeader* action_header) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete action_header_;
  }
  if (action_header) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(action_header);
    if (message_arena != submessage_arena) {
      action_header = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_header, submessage_arena);
    }
    
  } else {
    
  }
  action_header_ = action_header;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.TeleportAction.action_header)
}

// .osi3.Vector3d position = 2;
inline bool TrafficAction_TeleportAction::_internal_has_position() const {
  return this != internal_default_instance() && position_ != nullptr;
}
inline bool TrafficAction_TeleportAction::has_position() const {
  return _internal_has_position();
}
inline const ::osi3::Vector3d& TrafficAction_TeleportAction::_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& TrafficAction_TeleportAction::position() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.TeleportAction.position)
  return _internal_position();
}
inline void TrafficAction_TeleportAction::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.TrafficAction.TeleportAction.position)
}
inline ::osi3::Vector3d* TrafficAction_TeleportAction::release_position() {
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Vector3d* TrafficAction_TeleportAction::unsafe_arena_release_position() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.TeleportAction.position)
  
  ::osi3::Vector3d* temp = position_;
  position_ = nullptr;
  return temp;
}
inline ::osi3::Vector3d* TrafficAction_TeleportAction::_internal_mutable_position() {
  
  if (position_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Vector3d>(GetArena());
    position_ = p;
  }
  return position_;
}
inline ::osi3::Vector3d* TrafficAction_TeleportAction::mutable_position() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.TeleportAction.position)
  return _internal_mutable_position();
}
inline void TrafficAction_TeleportAction::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.TrafficAction.TeleportAction.position)
}

// .osi3.Orientation3d orientation = 3;
inline bool TrafficAction_TeleportAction::_internal_has_orientation() const {
  return this != internal_default_instance() && orientation_ != nullptr;
}
inline bool TrafficAction_TeleportAction::has_orientation() const {
  return _internal_has_orientation();
}
inline const ::osi3::Orientation3d& TrafficAction_TeleportAction::_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& TrafficAction_TeleportAction::orientation() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.TeleportAction.orientation)
  return _internal_orientation();
}
inline void TrafficAction_TeleportAction::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.TrafficAction.TeleportAction.orientation)
}
inline ::osi3::Orientation3d* TrafficAction_TeleportAction::release_orientation() {
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::Orientation3d* TrafficAction_TeleportAction::unsafe_arena_release_orientation() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.TeleportAction.orientation)
  
  ::osi3::Orientation3d* temp = orientation_;
  orientation_ = nullptr;
  return temp;
}
inline ::osi3::Orientation3d* TrafficAction_TeleportAction::_internal_mutable_orientation() {
  
  if (orientation_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::Orientation3d>(GetArena());
    orientation_ = p;
  }
  return orientation_;
}
inline ::osi3::Orientation3d* TrafficAction_TeleportAction::mutable_orientation() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.TeleportAction.orientation)
  return _internal_mutable_orientation();
}
inline void TrafficAction_TeleportAction::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.TrafficAction.TeleportAction.orientation)
}

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

// TrafficAction

// .osi3.TrafficAction.FollowTrajectoryAction follow_trajectory_action = 1;
inline bool TrafficAction::_internal_has_follow_trajectory_action() const {
  return this != internal_default_instance() && follow_trajectory_action_ != nullptr;
}
inline bool TrafficAction::has_follow_trajectory_action() const {
  return _internal_has_follow_trajectory_action();
}
inline void TrafficAction::clear_follow_trajectory_action() {
  if (GetArena() == nullptr && follow_trajectory_action_ != nullptr) {
    delete follow_trajectory_action_;
  }
  follow_trajectory_action_ = nullptr;
}
inline const ::osi3::TrafficAction_FollowTrajectoryAction& TrafficAction::_internal_follow_trajectory_action() const {
  const ::osi3::TrafficAction_FollowTrajectoryAction* p = follow_trajectory_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_FollowTrajectoryAction&>(
      ::osi3::_TrafficAction_FollowTrajectoryAction_default_instance_);
}
inline const ::osi3::TrafficAction_FollowTrajectoryAction& TrafficAction::follow_trajectory_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.follow_trajectory_action)
  return _internal_follow_trajectory_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_follow_trajectory_action(
    ::osi3::TrafficAction_FollowTrajectoryAction* follow_trajectory_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(follow_trajectory_action_);
  }
  follow_trajectory_action_ = follow_trajectory_action;
  if (follow_trajectory_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.follow_trajectory_action)
}
inline ::osi3::TrafficAction_FollowTrajectoryAction* TrafficAction::release_follow_trajectory_action() {
  
  ::osi3::TrafficAction_FollowTrajectoryAction* temp = follow_trajectory_action_;
  follow_trajectory_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_FollowTrajectoryAction* TrafficAction::unsafe_arena_release_follow_trajectory_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.follow_trajectory_action)
  
  ::osi3::TrafficAction_FollowTrajectoryAction* temp = follow_trajectory_action_;
  follow_trajectory_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_FollowTrajectoryAction* TrafficAction::_internal_mutable_follow_trajectory_action() {
  
  if (follow_trajectory_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_FollowTrajectoryAction>(GetArena());
    follow_trajectory_action_ = p;
  }
  return follow_trajectory_action_;
}
inline ::osi3::TrafficAction_FollowTrajectoryAction* TrafficAction::mutable_follow_trajectory_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.follow_trajectory_action)
  return _internal_mutable_follow_trajectory_action();
}
inline void TrafficAction::set_allocated_follow_trajectory_action(::osi3::TrafficAction_FollowTrajectoryAction* follow_trajectory_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete follow_trajectory_action_;
  }
  if (follow_trajectory_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(follow_trajectory_action);
    if (message_arena != submessage_arena) {
      follow_trajectory_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, follow_trajectory_action, submessage_arena);
    }
    
  } else {
    
  }
  follow_trajectory_action_ = follow_trajectory_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.follow_trajectory_action)
}

// .osi3.TrafficAction.FollowPathAction follow_path_action = 2;
inline bool TrafficAction::_internal_has_follow_path_action() const {
  return this != internal_default_instance() && follow_path_action_ != nullptr;
}
inline bool TrafficAction::has_follow_path_action() const {
  return _internal_has_follow_path_action();
}
inline void TrafficAction::clear_follow_path_action() {
  if (GetArena() == nullptr && follow_path_action_ != nullptr) {
    delete follow_path_action_;
  }
  follow_path_action_ = nullptr;
}
inline const ::osi3::TrafficAction_FollowPathAction& TrafficAction::_internal_follow_path_action() const {
  const ::osi3::TrafficAction_FollowPathAction* p = follow_path_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_FollowPathAction&>(
      ::osi3::_TrafficAction_FollowPathAction_default_instance_);
}
inline const ::osi3::TrafficAction_FollowPathAction& TrafficAction::follow_path_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.follow_path_action)
  return _internal_follow_path_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_follow_path_action(
    ::osi3::TrafficAction_FollowPathAction* follow_path_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(follow_path_action_);
  }
  follow_path_action_ = follow_path_action;
  if (follow_path_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.follow_path_action)
}
inline ::osi3::TrafficAction_FollowPathAction* TrafficAction::release_follow_path_action() {
  
  ::osi3::TrafficAction_FollowPathAction* temp = follow_path_action_;
  follow_path_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_FollowPathAction* TrafficAction::unsafe_arena_release_follow_path_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.follow_path_action)
  
  ::osi3::TrafficAction_FollowPathAction* temp = follow_path_action_;
  follow_path_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_FollowPathAction* TrafficAction::_internal_mutable_follow_path_action() {
  
  if (follow_path_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_FollowPathAction>(GetArena());
    follow_path_action_ = p;
  }
  return follow_path_action_;
}
inline ::osi3::TrafficAction_FollowPathAction* TrafficAction::mutable_follow_path_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.follow_path_action)
  return _internal_mutable_follow_path_action();
}
inline void TrafficAction::set_allocated_follow_path_action(::osi3::TrafficAction_FollowPathAction* follow_path_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete follow_path_action_;
  }
  if (follow_path_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(follow_path_action);
    if (message_arena != submessage_arena) {
      follow_path_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, follow_path_action, submessage_arena);
    }
    
  } else {
    
  }
  follow_path_action_ = follow_path_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.follow_path_action)
}

// .osi3.TrafficAction.AcquireGlobalPositionAction acquire_global_position_action = 3;
inline bool TrafficAction::_internal_has_acquire_global_position_action() const {
  return this != internal_default_instance() && acquire_global_position_action_ != nullptr;
}
inline bool TrafficAction::has_acquire_global_position_action() const {
  return _internal_has_acquire_global_position_action();
}
inline void TrafficAction::clear_acquire_global_position_action() {
  if (GetArena() == nullptr && acquire_global_position_action_ != nullptr) {
    delete acquire_global_position_action_;
  }
  acquire_global_position_action_ = nullptr;
}
inline const ::osi3::TrafficAction_AcquireGlobalPositionAction& TrafficAction::_internal_acquire_global_position_action() const {
  const ::osi3::TrafficAction_AcquireGlobalPositionAction* p = acquire_global_position_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_AcquireGlobalPositionAction&>(
      ::osi3::_TrafficAction_AcquireGlobalPositionAction_default_instance_);
}
inline const ::osi3::TrafficAction_AcquireGlobalPositionAction& TrafficAction::acquire_global_position_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.acquire_global_position_action)
  return _internal_acquire_global_position_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_acquire_global_position_action(
    ::osi3::TrafficAction_AcquireGlobalPositionAction* acquire_global_position_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(acquire_global_position_action_);
  }
  acquire_global_position_action_ = acquire_global_position_action;
  if (acquire_global_position_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.acquire_global_position_action)
}
inline ::osi3::TrafficAction_AcquireGlobalPositionAction* TrafficAction::release_acquire_global_position_action() {
  
  ::osi3::TrafficAction_AcquireGlobalPositionAction* temp = acquire_global_position_action_;
  acquire_global_position_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_AcquireGlobalPositionAction* TrafficAction::unsafe_arena_release_acquire_global_position_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.acquire_global_position_action)
  
  ::osi3::TrafficAction_AcquireGlobalPositionAction* temp = acquire_global_position_action_;
  acquire_global_position_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_AcquireGlobalPositionAction* TrafficAction::_internal_mutable_acquire_global_position_action() {
  
  if (acquire_global_position_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_AcquireGlobalPositionAction>(GetArena());
    acquire_global_position_action_ = p;
  }
  return acquire_global_position_action_;
}
inline ::osi3::TrafficAction_AcquireGlobalPositionAction* TrafficAction::mutable_acquire_global_position_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.acquire_global_position_action)
  return _internal_mutable_acquire_global_position_action();
}
inline void TrafficAction::set_allocated_acquire_global_position_action(::osi3::TrafficAction_AcquireGlobalPositionAction* acquire_global_position_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete acquire_global_position_action_;
  }
  if (acquire_global_position_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(acquire_global_position_action);
    if (message_arena != submessage_arena) {
      acquire_global_position_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, acquire_global_position_action, submessage_arena);
    }
    
  } else {
    
  }
  acquire_global_position_action_ = acquire_global_position_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.acquire_global_position_action)
}

// .osi3.TrafficAction.LaneChangeAction lane_change_action = 4;
inline bool TrafficAction::_internal_has_lane_change_action() const {
  return this != internal_default_instance() && lane_change_action_ != nullptr;
}
inline bool TrafficAction::has_lane_change_action() const {
  return _internal_has_lane_change_action();
}
inline void TrafficAction::clear_lane_change_action() {
  if (GetArena() == nullptr && lane_change_action_ != nullptr) {
    delete lane_change_action_;
  }
  lane_change_action_ = nullptr;
}
inline const ::osi3::TrafficAction_LaneChangeAction& TrafficAction::_internal_lane_change_action() const {
  const ::osi3::TrafficAction_LaneChangeAction* p = lane_change_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_LaneChangeAction&>(
      ::osi3::_TrafficAction_LaneChangeAction_default_instance_);
}
inline const ::osi3::TrafficAction_LaneChangeAction& TrafficAction::lane_change_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.lane_change_action)
  return _internal_lane_change_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_lane_change_action(
    ::osi3::TrafficAction_LaneChangeAction* lane_change_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lane_change_action_);
  }
  lane_change_action_ = lane_change_action;
  if (lane_change_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.lane_change_action)
}
inline ::osi3::TrafficAction_LaneChangeAction* TrafficAction::release_lane_change_action() {
  
  ::osi3::TrafficAction_LaneChangeAction* temp = lane_change_action_;
  lane_change_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_LaneChangeAction* TrafficAction::unsafe_arena_release_lane_change_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.lane_change_action)
  
  ::osi3::TrafficAction_LaneChangeAction* temp = lane_change_action_;
  lane_change_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_LaneChangeAction* TrafficAction::_internal_mutable_lane_change_action() {
  
  if (lane_change_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_LaneChangeAction>(GetArena());
    lane_change_action_ = p;
  }
  return lane_change_action_;
}
inline ::osi3::TrafficAction_LaneChangeAction* TrafficAction::mutable_lane_change_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.lane_change_action)
  return _internal_mutable_lane_change_action();
}
inline void TrafficAction::set_allocated_lane_change_action(::osi3::TrafficAction_LaneChangeAction* lane_change_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete lane_change_action_;
  }
  if (lane_change_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lane_change_action);
    if (message_arena != submessage_arena) {
      lane_change_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, lane_change_action, submessage_arena);
    }
    
  } else {
    
  }
  lane_change_action_ = lane_change_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.lane_change_action)
}

// .osi3.TrafficAction.SpeedAction speed_action = 5;
inline bool TrafficAction::_internal_has_speed_action() const {
  return this != internal_default_instance() && speed_action_ != nullptr;
}
inline bool TrafficAction::has_speed_action() const {
  return _internal_has_speed_action();
}
inline void TrafficAction::clear_speed_action() {
  if (GetArena() == nullptr && speed_action_ != nullptr) {
    delete speed_action_;
  }
  speed_action_ = nullptr;
}
inline const ::osi3::TrafficAction_SpeedAction& TrafficAction::_internal_speed_action() const {
  const ::osi3::TrafficAction_SpeedAction* p = speed_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_SpeedAction&>(
      ::osi3::_TrafficAction_SpeedAction_default_instance_);
}
inline const ::osi3::TrafficAction_SpeedAction& TrafficAction::speed_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.speed_action)
  return _internal_speed_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_speed_action(
    ::osi3::TrafficAction_SpeedAction* speed_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(speed_action_);
  }
  speed_action_ = speed_action;
  if (speed_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.speed_action)
}
inline ::osi3::TrafficAction_SpeedAction* TrafficAction::release_speed_action() {
  
  ::osi3::TrafficAction_SpeedAction* temp = speed_action_;
  speed_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_SpeedAction* TrafficAction::unsafe_arena_release_speed_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.speed_action)
  
  ::osi3::TrafficAction_SpeedAction* temp = speed_action_;
  speed_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_SpeedAction* TrafficAction::_internal_mutable_speed_action() {
  
  if (speed_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_SpeedAction>(GetArena());
    speed_action_ = p;
  }
  return speed_action_;
}
inline ::osi3::TrafficAction_SpeedAction* TrafficAction::mutable_speed_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.speed_action)
  return _internal_mutable_speed_action();
}
inline void TrafficAction::set_allocated_speed_action(::osi3::TrafficAction_SpeedAction* speed_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete speed_action_;
  }
  if (speed_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(speed_action);
    if (message_arena != submessage_arena) {
      speed_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, speed_action, submessage_arena);
    }
    
  } else {
    
  }
  speed_action_ = speed_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.speed_action)
}

// .osi3.TrafficAction.AbortActionsAction abort_actions_action = 6;
inline bool TrafficAction::_internal_has_abort_actions_action() const {
  return this != internal_default_instance() && abort_actions_action_ != nullptr;
}
inline bool TrafficAction::has_abort_actions_action() const {
  return _internal_has_abort_actions_action();
}
inline void TrafficAction::clear_abort_actions_action() {
  if (GetArena() == nullptr && abort_actions_action_ != nullptr) {
    delete abort_actions_action_;
  }
  abort_actions_action_ = nullptr;
}
inline const ::osi3::TrafficAction_AbortActionsAction& TrafficAction::_internal_abort_actions_action() const {
  const ::osi3::TrafficAction_AbortActionsAction* p = abort_actions_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_AbortActionsAction&>(
      ::osi3::_TrafficAction_AbortActionsAction_default_instance_);
}
inline const ::osi3::TrafficAction_AbortActionsAction& TrafficAction::abort_actions_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.abort_actions_action)
  return _internal_abort_actions_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_abort_actions_action(
    ::osi3::TrafficAction_AbortActionsAction* abort_actions_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(abort_actions_action_);
  }
  abort_actions_action_ = abort_actions_action;
  if (abort_actions_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.abort_actions_action)
}
inline ::osi3::TrafficAction_AbortActionsAction* TrafficAction::release_abort_actions_action() {
  
  ::osi3::TrafficAction_AbortActionsAction* temp = abort_actions_action_;
  abort_actions_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_AbortActionsAction* TrafficAction::unsafe_arena_release_abort_actions_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.abort_actions_action)
  
  ::osi3::TrafficAction_AbortActionsAction* temp = abort_actions_action_;
  abort_actions_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_AbortActionsAction* TrafficAction::_internal_mutable_abort_actions_action() {
  
  if (abort_actions_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_AbortActionsAction>(GetArena());
    abort_actions_action_ = p;
  }
  return abort_actions_action_;
}
inline ::osi3::TrafficAction_AbortActionsAction* TrafficAction::mutable_abort_actions_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.abort_actions_action)
  return _internal_mutable_abort_actions_action();
}
inline void TrafficAction::set_allocated_abort_actions_action(::osi3::TrafficAction_AbortActionsAction* abort_actions_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete abort_actions_action_;
  }
  if (abort_actions_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(abort_actions_action);
    if (message_arena != submessage_arena) {
      abort_actions_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, abort_actions_action, submessage_arena);
    }
    
  } else {
    
  }
  abort_actions_action_ = abort_actions_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.abort_actions_action)
}

// .osi3.TrafficAction.EndActionsAction end_actions_action = 7;
inline bool TrafficAction::_internal_has_end_actions_action() const {
  return this != internal_default_instance() && end_actions_action_ != nullptr;
}
inline bool TrafficAction::has_end_actions_action() const {
  return _internal_has_end_actions_action();
}
inline void TrafficAction::clear_end_actions_action() {
  if (GetArena() == nullptr && end_actions_action_ != nullptr) {
    delete end_actions_action_;
  }
  end_actions_action_ = nullptr;
}
inline const ::osi3::TrafficAction_EndActionsAction& TrafficAction::_internal_end_actions_action() const {
  const ::osi3::TrafficAction_EndActionsAction* p = end_actions_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_EndActionsAction&>(
      ::osi3::_TrafficAction_EndActionsAction_default_instance_);
}
inline const ::osi3::TrafficAction_EndActionsAction& TrafficAction::end_actions_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.end_actions_action)
  return _internal_end_actions_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_end_actions_action(
    ::osi3::TrafficAction_EndActionsAction* end_actions_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(end_actions_action_);
  }
  end_actions_action_ = end_actions_action;
  if (end_actions_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.end_actions_action)
}
inline ::osi3::TrafficAction_EndActionsAction* TrafficAction::release_end_actions_action() {
  
  ::osi3::TrafficAction_EndActionsAction* temp = end_actions_action_;
  end_actions_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_EndActionsAction* TrafficAction::unsafe_arena_release_end_actions_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.end_actions_action)
  
  ::osi3::TrafficAction_EndActionsAction* temp = end_actions_action_;
  end_actions_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_EndActionsAction* TrafficAction::_internal_mutable_end_actions_action() {
  
  if (end_actions_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_EndActionsAction>(GetArena());
    end_actions_action_ = p;
  }
  return end_actions_action_;
}
inline ::osi3::TrafficAction_EndActionsAction* TrafficAction::mutable_end_actions_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.end_actions_action)
  return _internal_mutable_end_actions_action();
}
inline void TrafficAction::set_allocated_end_actions_action(::osi3::TrafficAction_EndActionsAction* end_actions_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete end_actions_action_;
  }
  if (end_actions_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(end_actions_action);
    if (message_arena != submessage_arena) {
      end_actions_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, end_actions_action, submessage_arena);
    }
    
  } else {
    
  }
  end_actions_action_ = end_actions_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.end_actions_action)
}

// .osi3.TrafficAction.CustomAction custom_action = 8;
inline bool TrafficAction::_internal_has_custom_action() const {
  return this != internal_default_instance() && custom_action_ != nullptr;
}
inline bool TrafficAction::has_custom_action() const {
  return _internal_has_custom_action();
}
inline void TrafficAction::clear_custom_action() {
  if (GetArena() == nullptr && custom_action_ != nullptr) {
    delete custom_action_;
  }
  custom_action_ = nullptr;
}
inline const ::osi3::TrafficAction_CustomAction& TrafficAction::_internal_custom_action() const {
  const ::osi3::TrafficAction_CustomAction* p = custom_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_CustomAction&>(
      ::osi3::_TrafficAction_CustomAction_default_instance_);
}
inline const ::osi3::TrafficAction_CustomAction& TrafficAction::custom_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.custom_action)
  return _internal_custom_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_custom_action(
    ::osi3::TrafficAction_CustomAction* custom_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(custom_action_);
  }
  custom_action_ = custom_action;
  if (custom_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.custom_action)
}
inline ::osi3::TrafficAction_CustomAction* TrafficAction::release_custom_action() {
  
  ::osi3::TrafficAction_CustomAction* temp = custom_action_;
  custom_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_CustomAction* TrafficAction::unsafe_arena_release_custom_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.custom_action)
  
  ::osi3::TrafficAction_CustomAction* temp = custom_action_;
  custom_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_CustomAction* TrafficAction::_internal_mutable_custom_action() {
  
  if (custom_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_CustomAction>(GetArena());
    custom_action_ = p;
  }
  return custom_action_;
}
inline ::osi3::TrafficAction_CustomAction* TrafficAction::mutable_custom_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.custom_action)
  return _internal_mutable_custom_action();
}
inline void TrafficAction::set_allocated_custom_action(::osi3::TrafficAction_CustomAction* custom_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete custom_action_;
  }
  if (custom_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(custom_action);
    if (message_arena != submessage_arena) {
      custom_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, custom_action, submessage_arena);
    }
    
  } else {
    
  }
  custom_action_ = custom_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.custom_action)
}

// .osi3.TrafficAction.LongitudinalDistanceAction longitudinal_distance_action = 9;
inline bool TrafficAction::_internal_has_longitudinal_distance_action() const {
  return this != internal_default_instance() && longitudinal_distance_action_ != nullptr;
}
inline bool TrafficAction::has_longitudinal_distance_action() const {
  return _internal_has_longitudinal_distance_action();
}
inline void TrafficAction::clear_longitudinal_distance_action() {
  if (GetArena() == nullptr && longitudinal_distance_action_ != nullptr) {
    delete longitudinal_distance_action_;
  }
  longitudinal_distance_action_ = nullptr;
}
inline const ::osi3::TrafficAction_LongitudinalDistanceAction& TrafficAction::_internal_longitudinal_distance_action() const {
  const ::osi3::TrafficAction_LongitudinalDistanceAction* p = longitudinal_distance_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_LongitudinalDistanceAction&>(
      ::osi3::_TrafficAction_LongitudinalDistanceAction_default_instance_);
}
inline const ::osi3::TrafficAction_LongitudinalDistanceAction& TrafficAction::longitudinal_distance_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.longitudinal_distance_action)
  return _internal_longitudinal_distance_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_longitudinal_distance_action(
    ::osi3::TrafficAction_LongitudinalDistanceAction* longitudinal_distance_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(longitudinal_distance_action_);
  }
  longitudinal_distance_action_ = longitudinal_distance_action;
  if (longitudinal_distance_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.longitudinal_distance_action)
}
inline ::osi3::TrafficAction_LongitudinalDistanceAction* TrafficAction::release_longitudinal_distance_action() {
  
  ::osi3::TrafficAction_LongitudinalDistanceAction* temp = longitudinal_distance_action_;
  longitudinal_distance_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_LongitudinalDistanceAction* TrafficAction::unsafe_arena_release_longitudinal_distance_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.longitudinal_distance_action)
  
  ::osi3::TrafficAction_LongitudinalDistanceAction* temp = longitudinal_distance_action_;
  longitudinal_distance_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_LongitudinalDistanceAction* TrafficAction::_internal_mutable_longitudinal_distance_action() {
  
  if (longitudinal_distance_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_LongitudinalDistanceAction>(GetArena());
    longitudinal_distance_action_ = p;
  }
  return longitudinal_distance_action_;
}
inline ::osi3::TrafficAction_LongitudinalDistanceAction* TrafficAction::mutable_longitudinal_distance_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.longitudinal_distance_action)
  return _internal_mutable_longitudinal_distance_action();
}
inline void TrafficAction::set_allocated_longitudinal_distance_action(::osi3::TrafficAction_LongitudinalDistanceAction* longitudinal_distance_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete longitudinal_distance_action_;
  }
  if (longitudinal_distance_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(longitudinal_distance_action);
    if (message_arena != submessage_arena) {
      longitudinal_distance_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, longitudinal_distance_action, submessage_arena);
    }
    
  } else {
    
  }
  longitudinal_distance_action_ = longitudinal_distance_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.longitudinal_distance_action)
}

// .osi3.TrafficAction.LaneOffsetAction lane_offset_action = 10;
inline bool TrafficAction::_internal_has_lane_offset_action() const {
  return this != internal_default_instance() && lane_offset_action_ != nullptr;
}
inline bool TrafficAction::has_lane_offset_action() const {
  return _internal_has_lane_offset_action();
}
inline void TrafficAction::clear_lane_offset_action() {
  if (GetArena() == nullptr && lane_offset_action_ != nullptr) {
    delete lane_offset_action_;
  }
  lane_offset_action_ = nullptr;
}
inline const ::osi3::TrafficAction_LaneOffsetAction& TrafficAction::_internal_lane_offset_action() const {
  const ::osi3::TrafficAction_LaneOffsetAction* p = lane_offset_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_LaneOffsetAction&>(
      ::osi3::_TrafficAction_LaneOffsetAction_default_instance_);
}
inline const ::osi3::TrafficAction_LaneOffsetAction& TrafficAction::lane_offset_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.lane_offset_action)
  return _internal_lane_offset_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_lane_offset_action(
    ::osi3::TrafficAction_LaneOffsetAction* lane_offset_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lane_offset_action_);
  }
  lane_offset_action_ = lane_offset_action;
  if (lane_offset_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.lane_offset_action)
}
inline ::osi3::TrafficAction_LaneOffsetAction* TrafficAction::release_lane_offset_action() {
  
  ::osi3::TrafficAction_LaneOffsetAction* temp = lane_offset_action_;
  lane_offset_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_LaneOffsetAction* TrafficAction::unsafe_arena_release_lane_offset_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.lane_offset_action)
  
  ::osi3::TrafficAction_LaneOffsetAction* temp = lane_offset_action_;
  lane_offset_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_LaneOffsetAction* TrafficAction::_internal_mutable_lane_offset_action() {
  
  if (lane_offset_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_LaneOffsetAction>(GetArena());
    lane_offset_action_ = p;
  }
  return lane_offset_action_;
}
inline ::osi3::TrafficAction_LaneOffsetAction* TrafficAction::mutable_lane_offset_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.lane_offset_action)
  return _internal_mutable_lane_offset_action();
}
inline void TrafficAction::set_allocated_lane_offset_action(::osi3::TrafficAction_LaneOffsetAction* lane_offset_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete lane_offset_action_;
  }
  if (lane_offset_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lane_offset_action);
    if (message_arena != submessage_arena) {
      lane_offset_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, lane_offset_action, submessage_arena);
    }
    
  } else {
    
  }
  lane_offset_action_ = lane_offset_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.lane_offset_action)
}

// .osi3.TrafficAction.LateralDistanceAction lateral_distance_action = 11;
inline bool TrafficAction::_internal_has_lateral_distance_action() const {
  return this != internal_default_instance() && lateral_distance_action_ != nullptr;
}
inline bool TrafficAction::has_lateral_distance_action() const {
  return _internal_has_lateral_distance_action();
}
inline void TrafficAction::clear_lateral_distance_action() {
  if (GetArena() == nullptr && lateral_distance_action_ != nullptr) {
    delete lateral_distance_action_;
  }
  lateral_distance_action_ = nullptr;
}
inline const ::osi3::TrafficAction_LateralDistanceAction& TrafficAction::_internal_lateral_distance_action() const {
  const ::osi3::TrafficAction_LateralDistanceAction* p = lateral_distance_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_LateralDistanceAction&>(
      ::osi3::_TrafficAction_LateralDistanceAction_default_instance_);
}
inline const ::osi3::TrafficAction_LateralDistanceAction& TrafficAction::lateral_distance_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.lateral_distance_action)
  return _internal_lateral_distance_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_lateral_distance_action(
    ::osi3::TrafficAction_LateralDistanceAction* lateral_distance_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(lateral_distance_action_);
  }
  lateral_distance_action_ = lateral_distance_action;
  if (lateral_distance_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.lateral_distance_action)
}
inline ::osi3::TrafficAction_LateralDistanceAction* TrafficAction::release_lateral_distance_action() {
  
  ::osi3::TrafficAction_LateralDistanceAction* temp = lateral_distance_action_;
  lateral_distance_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_LateralDistanceAction* TrafficAction::unsafe_arena_release_lateral_distance_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.lateral_distance_action)
  
  ::osi3::TrafficAction_LateralDistanceAction* temp = lateral_distance_action_;
  lateral_distance_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_LateralDistanceAction* TrafficAction::_internal_mutable_lateral_distance_action() {
  
  if (lateral_distance_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_LateralDistanceAction>(GetArena());
    lateral_distance_action_ = p;
  }
  return lateral_distance_action_;
}
inline ::osi3::TrafficAction_LateralDistanceAction* TrafficAction::mutable_lateral_distance_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.lateral_distance_action)
  return _internal_mutable_lateral_distance_action();
}
inline void TrafficAction::set_allocated_lateral_distance_action(::osi3::TrafficAction_LateralDistanceAction* lateral_distance_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete lateral_distance_action_;
  }
  if (lateral_distance_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(lateral_distance_action);
    if (message_arena != submessage_arena) {
      lateral_distance_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, lateral_distance_action, submessage_arena);
    }
    
  } else {
    
  }
  lateral_distance_action_ = lateral_distance_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.lateral_distance_action)
}

// .osi3.TrafficAction.TeleportAction teleport_action = 12;
inline bool TrafficAction::_internal_has_teleport_action() const {
  return this != internal_default_instance() && teleport_action_ != nullptr;
}
inline bool TrafficAction::has_teleport_action() const {
  return _internal_has_teleport_action();
}
inline void TrafficAction::clear_teleport_action() {
  if (GetArena() == nullptr && teleport_action_ != nullptr) {
    delete teleport_action_;
  }
  teleport_action_ = nullptr;
}
inline const ::osi3::TrafficAction_TeleportAction& TrafficAction::_internal_teleport_action() const {
  const ::osi3::TrafficAction_TeleportAction* p = teleport_action_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::TrafficAction_TeleportAction&>(
      ::osi3::_TrafficAction_TeleportAction_default_instance_);
}
inline const ::osi3::TrafficAction_TeleportAction& TrafficAction::teleport_action() const {
  // @@protoc_insertion_point(field_get:osi3.TrafficAction.teleport_action)
  return _internal_teleport_action();
}
inline void TrafficAction::unsafe_arena_set_allocated_teleport_action(
    ::osi3::TrafficAction_TeleportAction* teleport_action) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(teleport_action_);
  }
  teleport_action_ = teleport_action;
  if (teleport_action) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.TrafficAction.teleport_action)
}
inline ::osi3::TrafficAction_TeleportAction* TrafficAction::release_teleport_action() {
  
  ::osi3::TrafficAction_TeleportAction* temp = teleport_action_;
  teleport_action_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::TrafficAction_TeleportAction* TrafficAction::unsafe_arena_release_teleport_action() {
  // @@protoc_insertion_point(field_release:osi3.TrafficAction.teleport_action)
  
  ::osi3::TrafficAction_TeleportAction* temp = teleport_action_;
  teleport_action_ = nullptr;
  return temp;
}
inline ::osi3::TrafficAction_TeleportAction* TrafficAction::_internal_mutable_teleport_action() {
  
  if (teleport_action_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::TrafficAction_TeleportAction>(GetArena());
    teleport_action_ = p;
  }
  return teleport_action_;
}
inline ::osi3::TrafficAction_TeleportAction* TrafficAction::mutable_teleport_action() {
  // @@protoc_insertion_point(field_mutable:osi3.TrafficAction.teleport_action)
  return _internal_mutable_teleport_action();
}
inline void TrafficAction::set_allocated_teleport_action(::osi3::TrafficAction_TeleportAction* teleport_action) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete teleport_action_;
  }
  if (teleport_action) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(teleport_action);
    if (message_arena != submessage_arena) {
      teleport_action = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, teleport_action, submessage_arena);
    }
    
  } else {
    
  }
  teleport_action_ = teleport_action;
  // @@protoc_insertion_point(field_set_allocated:osi3.TrafficAction.teleport_action)
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace osi3

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::osi3::TrafficAction_FollowingMode> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::TrafficAction_FollowingMode>() {
  return ::osi3::TrafficAction_FollowingMode_descriptor();
}
template <> struct is_proto_enum< ::osi3::TrafficAction_DynamicsShape> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::TrafficAction_DynamicsShape>() {
  return ::osi3::TrafficAction_DynamicsShape_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

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