// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/util/internal/testdata/timestamp_duration.proto

#include <google/protobuf/util/internal/testdata/timestamp_duration.pb.h>

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// This is a temporary google only hack
#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
#include "third_party/protobuf/version.h"
#endif
// @@protoc_insertion_point(includes)

namespace protobuf_google_2fprotobuf_2fduration_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2fduration_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Duration;
}  // namespace protobuf_google_2fprotobuf_2fduration_2eproto
namespace protobuf_google_2fprotobuf_2ftimestamp_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2ftimestamp_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Timestamp;
}  // namespace protobuf_google_2fprotobuf_2ftimestamp_2eproto
namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto {
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_DurationType;
extern PROTOBUF_INTERNAL_EXPORT_protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto ::google::protobuf::internal::SCCInfo<1> scc_info_TimeStampType;
}  // namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto
namespace google {
namespace protobuf {
namespace testing {
class TimestampDurationTestCasesDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TimestampDurationTestCases>
      _instance;
} _TimestampDurationTestCases_default_instance_;
class TimeStampTypeDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TimeStampType>
      _instance;
} _TimeStampType_default_instance_;
class DurationTypeDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<DurationType>
      _instance;
} _DurationType_default_instance_;
class TimestampDurationDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<TimestampDuration>
      _instance;
} _TimestampDuration_default_instance_;
}  // namespace testing
}  // namespace protobuf
}  // namespace google
namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto {
static void InitDefaultsTimestampDurationTestCases() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_TimestampDurationTestCases_default_instance_;
    new (ptr) ::google::protobuf::testing::TimestampDurationTestCases();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::TimestampDurationTestCases::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<4> scc_info_TimestampDurationTestCases =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsTimestampDurationTestCases}, {
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimeStampType.base,
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_DurationType.base,
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,}};

static void InitDefaultsTimeStampType() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_TimeStampType_default_instance_;
    new (ptr) ::google::protobuf::testing::TimeStampType();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::TimeStampType::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_TimeStampType =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsTimeStampType}, {
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,}};

static void InitDefaultsDurationType() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_DurationType_default_instance_;
    new (ptr) ::google::protobuf::testing::DurationType();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::DurationType::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<1> scc_info_DurationType =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsDurationType}, {
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,}};

static void InitDefaultsTimestampDuration() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::google::protobuf::testing::_TimestampDuration_default_instance_;
    new (ptr) ::google::protobuf::testing::TimestampDuration();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::google::protobuf::testing::TimestampDuration::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<2> scc_info_TimestampDuration =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsTimestampDuration}, {
      &protobuf_google_2fprotobuf_2ftimestamp_2eproto::scc_info_Timestamp.base,
      &protobuf_google_2fprotobuf_2fduration_2eproto::scc_info_Duration.base,}};

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_TimestampDurationTestCases.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TimeStampType.base);
  ::google::protobuf::internal::InitSCC(&scc_info_DurationType.base);
  ::google::protobuf::internal::InitSCC(&scc_info_TimestampDuration.base);
}

::google::protobuf::Metadata file_level_metadata[4];

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, epoch_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, epoch2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, mintime_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, maxtime_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval3_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval4_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval5_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval6_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval7_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, timeval8_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, zero_duration_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, min_duration_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, max_duration_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, duration1_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, duration2_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, duration3_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, duration4_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDurationTestCases, duration5_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimeStampType, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimeStampType, timestamp_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::DurationType, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::DurationType, duration_),
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDuration, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDuration, ts_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDuration, dur_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::google::protobuf::testing::TimestampDuration, rep_ts_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::google::protobuf::testing::TimestampDurationTestCases)},
  { 25, -1, sizeof(::google::protobuf::testing::TimeStampType)},
  { 31, -1, sizeof(::google::protobuf::testing::DurationType)},
  { 37, -1, sizeof(::google::protobuf::testing::TimestampDuration)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_TimestampDurationTestCases_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_TimeStampType_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_DurationType_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::google::protobuf::testing::_TimestampDuration_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  AssignDescriptors(
      "google/protobuf/util/internal/testdata/timestamp_duration.proto", schemas, file_default_instances, TableStruct::offsets,
      file_level_metadata, NULL, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, protobuf_AssignDescriptors);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 4);
}

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n\?google/protobuf/util/internal/testdata"
      "/timestamp_duration.proto\022\027google.protob"
      "uf.testing\032\037google/protobuf/timestamp.pr"
      "oto\032\036google/protobuf/duration.proto\"\217\t\n\032"
      "TimestampDurationTestCases\0225\n\005epoch\030\001 \001("
      "\0132&.google.protobuf.testing.TimeStampTyp"
      "e\0226\n\006epoch2\030\002 \001(\0132&.google.protobuf.test"
      "ing.TimeStampType\0227\n\007mintime\030\003 \001(\0132&.goo"
      "gle.protobuf.testing.TimeStampType\0227\n\007ma"
      "xtime\030\004 \001(\0132&.google.protobuf.testing.Ti"
      "meStampType\0228\n\010timeval1\030\005 \001(\0132&.google.p"
      "rotobuf.testing.TimeStampType\0228\n\010timeval"
      "2\030\006 \001(\0132&.google.protobuf.testing.TimeSt"
      "ampType\0228\n\010timeval3\030\007 \001(\0132&.google.proto"
      "buf.testing.TimeStampType\0228\n\010timeval4\030\010 "
      "\001(\0132&.google.protobuf.testing.TimeStampT"
      "ype\0228\n\010timeval5\030\t \001(\0132&.google.protobuf."
      "testing.TimeStampType\0228\n\010timeval6\030\n \001(\0132"
      "&.google.protobuf.testing.TimeStampType\022"
      "8\n\010timeval7\030\013 \001(\0132&.google.protobuf.test"
      "ing.TimeStampType\022,\n\010timeval8\030\014 \001(\0132\032.go"
      "ogle.protobuf.Timestamp\022<\n\rzero_duration"
      "\030e \001(\0132%.google.protobuf.testing.Duratio"
      "nType\022;\n\014min_duration\030f \001(\0132%.google.pro"
      "tobuf.testing.DurationType\022;\n\014max_durati"
      "on\030g \001(\0132%.google.protobuf.testing.Durat"
      "ionType\0228\n\tduration1\030h \001(\0132%.google.prot"
      "obuf.testing.DurationType\0228\n\tduration2\030i"
      " \001(\0132%.google.protobuf.testing.DurationT"
      "ype\0228\n\tduration3\030j \001(\0132%.google.protobuf"
      ".testing.DurationType\0228\n\tduration4\030k \001(\013"
      "2%.google.protobuf.testing.DurationType\022"
      ",\n\tduration5\030l \001(\0132\031.google.protobuf.Dur"
      "ation\">\n\rTimeStampType\022-\n\ttimestamp\030\001 \001("
      "\0132\032.google.protobuf.Timestamp\";\n\014Duratio"
      "nType\022+\n\010duration\030\001 \001(\0132\031.google.protobu"
      "f.Duration\"\217\001\n\021TimestampDuration\022&\n\002ts\030\001"
      " \001(\0132\032.google.protobuf.Timestamp\022&\n\003dur\030"
      "\002 \001(\0132\031.google.protobuf.Duration\022*\n\006rep_"
      "ts\030\003 \003(\0132\032.google.protobuf.Timestamp2\220\001\n"
      "\034TimestampDurationTestService\022p\n\004Call\0223."
      "google.protobuf.testing.TimestampDuratio"
      "nTestCases\0323.google.protobuf.testing.Tim"
      "estampDurationTestCasesb\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 1751);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "google/protobuf/util/internal/testdata/timestamp_duration.proto", &protobuf_RegisterTypes);
  ::protobuf_google_2fprotobuf_2ftimestamp_2eproto::AddDescriptors();
  ::protobuf_google_2fprotobuf_2fduration_2eproto::AddDescriptors();
}

void AddDescriptors() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;
}  // namespace protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto
namespace google {
namespace protobuf {
namespace testing {

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

void TimestampDurationTestCases::InitAsDefaultInstance() {
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->epoch_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->epoch2_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->mintime_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->maxtime_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval1_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval2_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval3_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval4_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval5_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval6_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval7_ = const_cast< ::google::protobuf::testing::TimeStampType*>(
      ::google::protobuf::testing::TimeStampType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->timeval8_ = const_cast< ::google::protobuf::Timestamp*>(
      ::google::protobuf::Timestamp::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->zero_duration_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->min_duration_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->max_duration_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->duration1_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->duration2_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->duration3_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->duration4_ = const_cast< ::google::protobuf::testing::DurationType*>(
      ::google::protobuf::testing::DurationType::internal_default_instance());
  ::google::protobuf::testing::_TimestampDurationTestCases_default_instance_._instance.get_mutable()->duration5_ = const_cast< ::google::protobuf::Duration*>(
      ::google::protobuf::Duration::internal_default_instance());
}
void TimestampDurationTestCases::clear_timeval8() {
  if (GetArenaNoVirtual() == NULL && timeval8_ != NULL) {
    delete timeval8_;
  }
  timeval8_ = NULL;
}
void TimestampDurationTestCases::clear_duration5() {
  if (GetArenaNoVirtual() == NULL && duration5_ != NULL) {
    delete duration5_;
  }
  duration5_ = NULL;
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TimestampDurationTestCases::kEpochFieldNumber;
const int TimestampDurationTestCases::kEpoch2FieldNumber;
const int TimestampDurationTestCases::kMintimeFieldNumber;
const int TimestampDurationTestCases::kMaxtimeFieldNumber;
const int TimestampDurationTestCases::kTimeval1FieldNumber;
const int TimestampDurationTestCases::kTimeval2FieldNumber;
const int TimestampDurationTestCases::kTimeval3FieldNumber;
const int TimestampDurationTestCases::kTimeval4FieldNumber;
const int TimestampDurationTestCases::kTimeval5FieldNumber;
const int TimestampDurationTestCases::kTimeval6FieldNumber;
const int TimestampDurationTestCases::kTimeval7FieldNumber;
const int TimestampDurationTestCases::kTimeval8FieldNumber;
const int TimestampDurationTestCases::kZeroDurationFieldNumber;
const int TimestampDurationTestCases::kMinDurationFieldNumber;
const int TimestampDurationTestCases::kMaxDurationFieldNumber;
const int TimestampDurationTestCases::kDuration1FieldNumber;
const int TimestampDurationTestCases::kDuration2FieldNumber;
const int TimestampDurationTestCases::kDuration3FieldNumber;
const int TimestampDurationTestCases::kDuration4FieldNumber;
const int TimestampDurationTestCases::kDuration5FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TimestampDurationTestCases::TimestampDurationTestCases()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimestampDurationTestCases.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.TimestampDurationTestCases)
}
TimestampDurationTestCases::TimestampDurationTestCases(const TimestampDurationTestCases& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_epoch()) {
    epoch_ = new ::google::protobuf::testing::TimeStampType(*from.epoch_);
  } else {
    epoch_ = NULL;
  }
  if (from.has_epoch2()) {
    epoch2_ = new ::google::protobuf::testing::TimeStampType(*from.epoch2_);
  } else {
    epoch2_ = NULL;
  }
  if (from.has_mintime()) {
    mintime_ = new ::google::protobuf::testing::TimeStampType(*from.mintime_);
  } else {
    mintime_ = NULL;
  }
  if (from.has_maxtime()) {
    maxtime_ = new ::google::protobuf::testing::TimeStampType(*from.maxtime_);
  } else {
    maxtime_ = NULL;
  }
  if (from.has_timeval1()) {
    timeval1_ = new ::google::protobuf::testing::TimeStampType(*from.timeval1_);
  } else {
    timeval1_ = NULL;
  }
  if (from.has_timeval2()) {
    timeval2_ = new ::google::protobuf::testing::TimeStampType(*from.timeval2_);
  } else {
    timeval2_ = NULL;
  }
  if (from.has_timeval3()) {
    timeval3_ = new ::google::protobuf::testing::TimeStampType(*from.timeval3_);
  } else {
    timeval3_ = NULL;
  }
  if (from.has_timeval4()) {
    timeval4_ = new ::google::protobuf::testing::TimeStampType(*from.timeval4_);
  } else {
    timeval4_ = NULL;
  }
  if (from.has_timeval5()) {
    timeval5_ = new ::google::protobuf::testing::TimeStampType(*from.timeval5_);
  } else {
    timeval5_ = NULL;
  }
  if (from.has_timeval6()) {
    timeval6_ = new ::google::protobuf::testing::TimeStampType(*from.timeval6_);
  } else {
    timeval6_ = NULL;
  }
  if (from.has_timeval7()) {
    timeval7_ = new ::google::protobuf::testing::TimeStampType(*from.timeval7_);
  } else {
    timeval7_ = NULL;
  }
  if (from.has_timeval8()) {
    timeval8_ = new ::google::protobuf::Timestamp(*from.timeval8_);
  } else {
    timeval8_ = NULL;
  }
  if (from.has_zero_duration()) {
    zero_duration_ = new ::google::protobuf::testing::DurationType(*from.zero_duration_);
  } else {
    zero_duration_ = NULL;
  }
  if (from.has_min_duration()) {
    min_duration_ = new ::google::protobuf::testing::DurationType(*from.min_duration_);
  } else {
    min_duration_ = NULL;
  }
  if (from.has_max_duration()) {
    max_duration_ = new ::google::protobuf::testing::DurationType(*from.max_duration_);
  } else {
    max_duration_ = NULL;
  }
  if (from.has_duration1()) {
    duration1_ = new ::google::protobuf::testing::DurationType(*from.duration1_);
  } else {
    duration1_ = NULL;
  }
  if (from.has_duration2()) {
    duration2_ = new ::google::protobuf::testing::DurationType(*from.duration2_);
  } else {
    duration2_ = NULL;
  }
  if (from.has_duration3()) {
    duration3_ = new ::google::protobuf::testing::DurationType(*from.duration3_);
  } else {
    duration3_ = NULL;
  }
  if (from.has_duration4()) {
    duration4_ = new ::google::protobuf::testing::DurationType(*from.duration4_);
  } else {
    duration4_ = NULL;
  }
  if (from.has_duration5()) {
    duration5_ = new ::google::protobuf::Duration(*from.duration5_);
  } else {
    duration5_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.TimestampDurationTestCases)
}

void TimestampDurationTestCases::SharedCtor() {
  ::memset(&epoch_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&duration5_) -
      reinterpret_cast<char*>(&epoch_)) + sizeof(duration5_));
}

TimestampDurationTestCases::~TimestampDurationTestCases() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.TimestampDurationTestCases)
  SharedDtor();
}

void TimestampDurationTestCases::SharedDtor() {
  if (this != internal_default_instance()) delete epoch_;
  if (this != internal_default_instance()) delete epoch2_;
  if (this != internal_default_instance()) delete mintime_;
  if (this != internal_default_instance()) delete maxtime_;
  if (this != internal_default_instance()) delete timeval1_;
  if (this != internal_default_instance()) delete timeval2_;
  if (this != internal_default_instance()) delete timeval3_;
  if (this != internal_default_instance()) delete timeval4_;
  if (this != internal_default_instance()) delete timeval5_;
  if (this != internal_default_instance()) delete timeval6_;
  if (this != internal_default_instance()) delete timeval7_;
  if (this != internal_default_instance()) delete timeval8_;
  if (this != internal_default_instance()) delete zero_duration_;
  if (this != internal_default_instance()) delete min_duration_;
  if (this != internal_default_instance()) delete max_duration_;
  if (this != internal_default_instance()) delete duration1_;
  if (this != internal_default_instance()) delete duration2_;
  if (this != internal_default_instance()) delete duration3_;
  if (this != internal_default_instance()) delete duration4_;
  if (this != internal_default_instance()) delete duration5_;
}

void TimestampDurationTestCases::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TimestampDurationTestCases::descriptor() {
  ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TimestampDurationTestCases& TimestampDurationTestCases::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimestampDurationTestCases.base);
  return *internal_default_instance();
}


void TimestampDurationTestCases::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.testing.TimestampDurationTestCases)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaNoVirtual() == NULL && epoch_ != NULL) {
    delete epoch_;
  }
  epoch_ = NULL;
  if (GetArenaNoVirtual() == NULL && epoch2_ != NULL) {
    delete epoch2_;
  }
  epoch2_ = NULL;
  if (GetArenaNoVirtual() == NULL && mintime_ != NULL) {
    delete mintime_;
  }
  mintime_ = NULL;
  if (GetArenaNoVirtual() == NULL && maxtime_ != NULL) {
    delete maxtime_;
  }
  maxtime_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval1_ != NULL) {
    delete timeval1_;
  }
  timeval1_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval2_ != NULL) {
    delete timeval2_;
  }
  timeval2_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval3_ != NULL) {
    delete timeval3_;
  }
  timeval3_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval4_ != NULL) {
    delete timeval4_;
  }
  timeval4_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval5_ != NULL) {
    delete timeval5_;
  }
  timeval5_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval6_ != NULL) {
    delete timeval6_;
  }
  timeval6_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval7_ != NULL) {
    delete timeval7_;
  }
  timeval7_ = NULL;
  if (GetArenaNoVirtual() == NULL && timeval8_ != NULL) {
    delete timeval8_;
  }
  timeval8_ = NULL;
  if (GetArenaNoVirtual() == NULL && zero_duration_ != NULL) {
    delete zero_duration_;
  }
  zero_duration_ = NULL;
  if (GetArenaNoVirtual() == NULL && min_duration_ != NULL) {
    delete min_duration_;
  }
  min_duration_ = NULL;
  if (GetArenaNoVirtual() == NULL && max_duration_ != NULL) {
    delete max_duration_;
  }
  max_duration_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration1_ != NULL) {
    delete duration1_;
  }
  duration1_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration2_ != NULL) {
    delete duration2_;
  }
  duration2_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration3_ != NULL) {
    delete duration3_;
  }
  duration3_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration4_ != NULL) {
    delete duration4_;
  }
  duration4_ = NULL;
  if (GetArenaNoVirtual() == NULL && duration5_ != NULL) {
    delete duration5_;
  }
  duration5_ = NULL;
  _internal_metadata_.Clear();
}

bool TimestampDurationTestCases::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.TimestampDurationTestCases)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.testing.TimeStampType epoch = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_epoch()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType epoch2 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_epoch2()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType mintime = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_mintime()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType maxtime = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(34u /* 34 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_maxtime()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval1 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 42 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval2 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 50 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval2()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval3 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 58 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval3()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval4 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 66 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval4()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval5 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 74 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval5()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval6 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 82 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval6()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.TimeStampType timeval7 = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 90 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval7()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Timestamp timeval8 = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 98 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timeval8()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType zero_duration = 101;
      case 101: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(42u /* 810 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_zero_duration()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType min_duration = 102;
      case 102: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(50u /* 818 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_min_duration()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType max_duration = 103;
      case 103: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(58u /* 826 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_max_duration()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType duration1 = 104;
      case 104: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(66u /* 834 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration1()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType duration2 = 105;
      case 105: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(74u /* 842 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration2()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType duration3 = 106;
      case 106: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(82u /* 850 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration3()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.testing.DurationType duration4 = 107;
      case 107: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(90u /* 858 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration4()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Duration duration5 = 108;
      case 108: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(98u /* 866 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration5()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:google.protobuf.testing.TimestampDurationTestCases)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:google.protobuf.testing.TimestampDurationTestCases)
  return false;
#undef DO_
}

void TimestampDurationTestCases::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.TimestampDurationTestCases)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.testing.TimeStampType epoch = 1;
  if (this->has_epoch()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_epoch(), output);
  }

  // .google.protobuf.testing.TimeStampType epoch2 = 2;
  if (this->has_epoch2()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_epoch2(), output);
  }

  // .google.protobuf.testing.TimeStampType mintime = 3;
  if (this->has_mintime()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3, this->_internal_mintime(), output);
  }

  // .google.protobuf.testing.TimeStampType maxtime = 4;
  if (this->has_maxtime()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      4, this->_internal_maxtime(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval1 = 5;
  if (this->has_timeval1()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      5, this->_internal_timeval1(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval2 = 6;
  if (this->has_timeval2()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      6, this->_internal_timeval2(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval3 = 7;
  if (this->has_timeval3()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      7, this->_internal_timeval3(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval4 = 8;
  if (this->has_timeval4()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      8, this->_internal_timeval4(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval5 = 9;
  if (this->has_timeval5()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      9, this->_internal_timeval5(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval6 = 10;
  if (this->has_timeval6()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      10, this->_internal_timeval6(), output);
  }

  // .google.protobuf.testing.TimeStampType timeval7 = 11;
  if (this->has_timeval7()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      11, this->_internal_timeval7(), output);
  }

  // .google.protobuf.Timestamp timeval8 = 12;
  if (this->has_timeval8()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      12, this->_internal_timeval8(), output);
  }

  // .google.protobuf.testing.DurationType zero_duration = 101;
  if (this->has_zero_duration()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      101, this->_internal_zero_duration(), output);
  }

  // .google.protobuf.testing.DurationType min_duration = 102;
  if (this->has_min_duration()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      102, this->_internal_min_duration(), output);
  }

  // .google.protobuf.testing.DurationType max_duration = 103;
  if (this->has_max_duration()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      103, this->_internal_max_duration(), output);
  }

  // .google.protobuf.testing.DurationType duration1 = 104;
  if (this->has_duration1()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      104, this->_internal_duration1(), output);
  }

  // .google.protobuf.testing.DurationType duration2 = 105;
  if (this->has_duration2()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      105, this->_internal_duration2(), output);
  }

  // .google.protobuf.testing.DurationType duration3 = 106;
  if (this->has_duration3()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      106, this->_internal_duration3(), output);
  }

  // .google.protobuf.testing.DurationType duration4 = 107;
  if (this->has_duration4()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      107, this->_internal_duration4(), output);
  }

  // .google.protobuf.Duration duration5 = 108;
  if (this->has_duration5()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      108, this->_internal_duration5(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:google.protobuf.testing.TimestampDurationTestCases)
}

::google::protobuf::uint8* TimestampDurationTestCases::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.testing.TimestampDurationTestCases)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.testing.TimeStampType epoch = 1;
  if (this->has_epoch()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_epoch(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType epoch2 = 2;
  if (this->has_epoch2()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_epoch2(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType mintime = 3;
  if (this->has_mintime()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->_internal_mintime(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType maxtime = 4;
  if (this->has_maxtime()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        4, this->_internal_maxtime(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval1 = 5;
  if (this->has_timeval1()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        5, this->_internal_timeval1(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval2 = 6;
  if (this->has_timeval2()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        6, this->_internal_timeval2(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval3 = 7;
  if (this->has_timeval3()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        7, this->_internal_timeval3(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval4 = 8;
  if (this->has_timeval4()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        8, this->_internal_timeval4(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval5 = 9;
  if (this->has_timeval5()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        9, this->_internal_timeval5(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval6 = 10;
  if (this->has_timeval6()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        10, this->_internal_timeval6(), deterministic, target);
  }

  // .google.protobuf.testing.TimeStampType timeval7 = 11;
  if (this->has_timeval7()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        11, this->_internal_timeval7(), deterministic, target);
  }

  // .google.protobuf.Timestamp timeval8 = 12;
  if (this->has_timeval8()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        12, this->_internal_timeval8(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType zero_duration = 101;
  if (this->has_zero_duration()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        101, this->_internal_zero_duration(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType min_duration = 102;
  if (this->has_min_duration()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        102, this->_internal_min_duration(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType max_duration = 103;
  if (this->has_max_duration()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        103, this->_internal_max_duration(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType duration1 = 104;
  if (this->has_duration1()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        104, this->_internal_duration1(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType duration2 = 105;
  if (this->has_duration2()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        105, this->_internal_duration2(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType duration3 = 106;
  if (this->has_duration3()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        106, this->_internal_duration3(), deterministic, target);
  }

  // .google.protobuf.testing.DurationType duration4 = 107;
  if (this->has_duration4()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        107, this->_internal_duration4(), deterministic, target);
  }

  // .google.protobuf.Duration duration5 = 108;
  if (this->has_duration5()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        108, this->_internal_duration5(), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.testing.TimestampDurationTestCases)
  return target;
}

size_t TimestampDurationTestCases::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.TimestampDurationTestCases)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .google.protobuf.testing.TimeStampType epoch = 1;
  if (this->has_epoch()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *epoch_);
  }

  // .google.protobuf.testing.TimeStampType epoch2 = 2;
  if (this->has_epoch2()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *epoch2_);
  }

  // .google.protobuf.testing.TimeStampType mintime = 3;
  if (this->has_mintime()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *mintime_);
  }

  // .google.protobuf.testing.TimeStampType maxtime = 4;
  if (this->has_maxtime()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *maxtime_);
  }

  // .google.protobuf.testing.TimeStampType timeval1 = 5;
  if (this->has_timeval1()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval1_);
  }

  // .google.protobuf.testing.TimeStampType timeval2 = 6;
  if (this->has_timeval2()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval2_);
  }

  // .google.protobuf.testing.TimeStampType timeval3 = 7;
  if (this->has_timeval3()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval3_);
  }

  // .google.protobuf.testing.TimeStampType timeval4 = 8;
  if (this->has_timeval4()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval4_);
  }

  // .google.protobuf.testing.TimeStampType timeval5 = 9;
  if (this->has_timeval5()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval5_);
  }

  // .google.protobuf.testing.TimeStampType timeval6 = 10;
  if (this->has_timeval6()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval6_);
  }

  // .google.protobuf.testing.TimeStampType timeval7 = 11;
  if (this->has_timeval7()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval7_);
  }

  // .google.protobuf.Timestamp timeval8 = 12;
  if (this->has_timeval8()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timeval8_);
  }

  // .google.protobuf.testing.DurationType zero_duration = 101;
  if (this->has_zero_duration()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *zero_duration_);
  }

  // .google.protobuf.testing.DurationType min_duration = 102;
  if (this->has_min_duration()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *min_duration_);
  }

  // .google.protobuf.testing.DurationType max_duration = 103;
  if (this->has_max_duration()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *max_duration_);
  }

  // .google.protobuf.testing.DurationType duration1 = 104;
  if (this->has_duration1()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration1_);
  }

  // .google.protobuf.testing.DurationType duration2 = 105;
  if (this->has_duration2()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration2_);
  }

  // .google.protobuf.testing.DurationType duration3 = 106;
  if (this->has_duration3()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration3_);
  }

  // .google.protobuf.testing.DurationType duration4 = 107;
  if (this->has_duration4()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration4_);
  }

  // .google.protobuf.Duration duration5 = 108;
  if (this->has_duration5()) {
    total_size += 2 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration5_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void TimestampDurationTestCases::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.testing.TimestampDurationTestCases)
  GOOGLE_DCHECK_NE(&from, this);
  const TimestampDurationTestCases* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const TimestampDurationTestCases>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.testing.TimestampDurationTestCases)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.testing.TimestampDurationTestCases)
    MergeFrom(*source);
  }
}

void TimestampDurationTestCases::MergeFrom(const TimestampDurationTestCases& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.testing.TimestampDurationTestCases)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_epoch()) {
    mutable_epoch()->::google::protobuf::testing::TimeStampType::MergeFrom(from.epoch());
  }
  if (from.has_epoch2()) {
    mutable_epoch2()->::google::protobuf::testing::TimeStampType::MergeFrom(from.epoch2());
  }
  if (from.has_mintime()) {
    mutable_mintime()->::google::protobuf::testing::TimeStampType::MergeFrom(from.mintime());
  }
  if (from.has_maxtime()) {
    mutable_maxtime()->::google::protobuf::testing::TimeStampType::MergeFrom(from.maxtime());
  }
  if (from.has_timeval1()) {
    mutable_timeval1()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval1());
  }
  if (from.has_timeval2()) {
    mutable_timeval2()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval2());
  }
  if (from.has_timeval3()) {
    mutable_timeval3()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval3());
  }
  if (from.has_timeval4()) {
    mutable_timeval4()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval4());
  }
  if (from.has_timeval5()) {
    mutable_timeval5()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval5());
  }
  if (from.has_timeval6()) {
    mutable_timeval6()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval6());
  }
  if (from.has_timeval7()) {
    mutable_timeval7()->::google::protobuf::testing::TimeStampType::MergeFrom(from.timeval7());
  }
  if (from.has_timeval8()) {
    mutable_timeval8()->::google::protobuf::Timestamp::MergeFrom(from.timeval8());
  }
  if (from.has_zero_duration()) {
    mutable_zero_duration()->::google::protobuf::testing::DurationType::MergeFrom(from.zero_duration());
  }
  if (from.has_min_duration()) {
    mutable_min_duration()->::google::protobuf::testing::DurationType::MergeFrom(from.min_duration());
  }
  if (from.has_max_duration()) {
    mutable_max_duration()->::google::protobuf::testing::DurationType::MergeFrom(from.max_duration());
  }
  if (from.has_duration1()) {
    mutable_duration1()->::google::protobuf::testing::DurationType::MergeFrom(from.duration1());
  }
  if (from.has_duration2()) {
    mutable_duration2()->::google::protobuf::testing::DurationType::MergeFrom(from.duration2());
  }
  if (from.has_duration3()) {
    mutable_duration3()->::google::protobuf::testing::DurationType::MergeFrom(from.duration3());
  }
  if (from.has_duration4()) {
    mutable_duration4()->::google::protobuf::testing::DurationType::MergeFrom(from.duration4());
  }
  if (from.has_duration5()) {
    mutable_duration5()->::google::protobuf::Duration::MergeFrom(from.duration5());
  }
}

void TimestampDurationTestCases::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.testing.TimestampDurationTestCases)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void TimestampDurationTestCases::CopyFrom(const TimestampDurationTestCases& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.TimestampDurationTestCases)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TimestampDurationTestCases::IsInitialized() const {
  return true;
}

void TimestampDurationTestCases::Swap(TimestampDurationTestCases* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TimestampDurationTestCases::InternalSwap(TimestampDurationTestCases* other) {
  using std::swap;
  swap(epoch_, other->epoch_);
  swap(epoch2_, other->epoch2_);
  swap(mintime_, other->mintime_);
  swap(maxtime_, other->maxtime_);
  swap(timeval1_, other->timeval1_);
  swap(timeval2_, other->timeval2_);
  swap(timeval3_, other->timeval3_);
  swap(timeval4_, other->timeval4_);
  swap(timeval5_, other->timeval5_);
  swap(timeval6_, other->timeval6_);
  swap(timeval7_, other->timeval7_);
  swap(timeval8_, other->timeval8_);
  swap(zero_duration_, other->zero_duration_);
  swap(min_duration_, other->min_duration_);
  swap(max_duration_, other->max_duration_);
  swap(duration1_, other->duration1_);
  swap(duration2_, other->duration2_);
  swap(duration3_, other->duration3_);
  swap(duration4_, other->duration4_);
  swap(duration5_, other->duration5_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata TimestampDurationTestCases::GetMetadata() const {
  protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages];
}


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

void TimeStampType::InitAsDefaultInstance() {
  ::google::protobuf::testing::_TimeStampType_default_instance_._instance.get_mutable()->timestamp_ = const_cast< ::google::protobuf::Timestamp*>(
      ::google::protobuf::Timestamp::internal_default_instance());
}
void TimeStampType::clear_timestamp() {
  if (GetArenaNoVirtual() == NULL && timestamp_ != NULL) {
    delete timestamp_;
  }
  timestamp_ = NULL;
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TimeStampType::kTimestampFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TimeStampType::TimeStampType()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimeStampType.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.TimeStampType)
}
TimeStampType::TimeStampType(const TimeStampType& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_timestamp()) {
    timestamp_ = new ::google::protobuf::Timestamp(*from.timestamp_);
  } else {
    timestamp_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.TimeStampType)
}

void TimeStampType::SharedCtor() {
  timestamp_ = NULL;
}

TimeStampType::~TimeStampType() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.TimeStampType)
  SharedDtor();
}

void TimeStampType::SharedDtor() {
  if (this != internal_default_instance()) delete timestamp_;
}

void TimeStampType::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TimeStampType::descriptor() {
  ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TimeStampType& TimeStampType::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimeStampType.base);
  return *internal_default_instance();
}


void TimeStampType::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.testing.TimeStampType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaNoVirtual() == NULL && timestamp_ != NULL) {
    delete timestamp_;
  }
  timestamp_ = NULL;
  _internal_metadata_.Clear();
}

bool TimeStampType::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.TimeStampType)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.Timestamp timestamp = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_timestamp()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:google.protobuf.testing.TimeStampType)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:google.protobuf.testing.TimeStampType)
  return false;
#undef DO_
}

void TimeStampType::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.TimeStampType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Timestamp timestamp = 1;
  if (this->has_timestamp()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_timestamp(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:google.protobuf.testing.TimeStampType)
}

::google::protobuf::uint8* TimeStampType::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.testing.TimeStampType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Timestamp timestamp = 1;
  if (this->has_timestamp()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_timestamp(), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.testing.TimeStampType)
  return target;
}

size_t TimeStampType::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.TimeStampType)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .google.protobuf.Timestamp timestamp = 1;
  if (this->has_timestamp()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *timestamp_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void TimeStampType::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.testing.TimeStampType)
  GOOGLE_DCHECK_NE(&from, this);
  const TimeStampType* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const TimeStampType>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.testing.TimeStampType)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.testing.TimeStampType)
    MergeFrom(*source);
  }
}

void TimeStampType::MergeFrom(const TimeStampType& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.testing.TimeStampType)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_timestamp()) {
    mutable_timestamp()->::google::protobuf::Timestamp::MergeFrom(from.timestamp());
  }
}

void TimeStampType::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.testing.TimeStampType)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void TimeStampType::CopyFrom(const TimeStampType& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.TimeStampType)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TimeStampType::IsInitialized() const {
  return true;
}

void TimeStampType::Swap(TimeStampType* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TimeStampType::InternalSwap(TimeStampType* other) {
  using std::swap;
  swap(timestamp_, other->timestamp_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata TimeStampType::GetMetadata() const {
  protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages];
}


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

void DurationType::InitAsDefaultInstance() {
  ::google::protobuf::testing::_DurationType_default_instance_._instance.get_mutable()->duration_ = const_cast< ::google::protobuf::Duration*>(
      ::google::protobuf::Duration::internal_default_instance());
}
void DurationType::clear_duration() {
  if (GetArenaNoVirtual() == NULL && duration_ != NULL) {
    delete duration_;
  }
  duration_ = NULL;
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int DurationType::kDurationFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

DurationType::DurationType()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_DurationType.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.DurationType)
}
DurationType::DurationType(const DurationType& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_duration()) {
    duration_ = new ::google::protobuf::Duration(*from.duration_);
  } else {
    duration_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.DurationType)
}

void DurationType::SharedCtor() {
  duration_ = NULL;
}

DurationType::~DurationType() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.DurationType)
  SharedDtor();
}

void DurationType::SharedDtor() {
  if (this != internal_default_instance()) delete duration_;
}

void DurationType::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* DurationType::descriptor() {
  ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const DurationType& DurationType::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_DurationType.base);
  return *internal_default_instance();
}


void DurationType::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.testing.DurationType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  if (GetArenaNoVirtual() == NULL && duration_ != NULL) {
    delete duration_;
  }
  duration_ = NULL;
  _internal_metadata_.Clear();
}

bool DurationType::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.DurationType)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.Duration duration = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_duration()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:google.protobuf.testing.DurationType)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:google.protobuf.testing.DurationType)
  return false;
#undef DO_
}

void DurationType::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.DurationType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Duration duration = 1;
  if (this->has_duration()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_duration(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:google.protobuf.testing.DurationType)
}

::google::protobuf::uint8* DurationType::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.testing.DurationType)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Duration duration = 1;
  if (this->has_duration()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_duration(), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.testing.DurationType)
  return target;
}

size_t DurationType::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.DurationType)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // .google.protobuf.Duration duration = 1;
  if (this->has_duration()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *duration_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void DurationType::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.testing.DurationType)
  GOOGLE_DCHECK_NE(&from, this);
  const DurationType* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const DurationType>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.testing.DurationType)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.testing.DurationType)
    MergeFrom(*source);
  }
}

void DurationType::MergeFrom(const DurationType& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.testing.DurationType)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_duration()) {
    mutable_duration()->::google::protobuf::Duration::MergeFrom(from.duration());
  }
}

void DurationType::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.testing.DurationType)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void DurationType::CopyFrom(const DurationType& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.DurationType)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool DurationType::IsInitialized() const {
  return true;
}

void DurationType::Swap(DurationType* other) {
  if (other == this) return;
  InternalSwap(other);
}
void DurationType::InternalSwap(DurationType* other) {
  using std::swap;
  swap(duration_, other->duration_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata DurationType::GetMetadata() const {
  protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages];
}


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

void TimestampDuration::InitAsDefaultInstance() {
  ::google::protobuf::testing::_TimestampDuration_default_instance_._instance.get_mutable()->ts_ = const_cast< ::google::protobuf::Timestamp*>(
      ::google::protobuf::Timestamp::internal_default_instance());
  ::google::protobuf::testing::_TimestampDuration_default_instance_._instance.get_mutable()->dur_ = const_cast< ::google::protobuf::Duration*>(
      ::google::protobuf::Duration::internal_default_instance());
}
void TimestampDuration::clear_ts() {
  if (GetArenaNoVirtual() == NULL && ts_ != NULL) {
    delete ts_;
  }
  ts_ = NULL;
}
void TimestampDuration::clear_dur() {
  if (GetArenaNoVirtual() == NULL && dur_ != NULL) {
    delete dur_;
  }
  dur_ = NULL;
}
void TimestampDuration::clear_rep_ts() {
  rep_ts_.Clear();
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int TimestampDuration::kTsFieldNumber;
const int TimestampDuration::kDurFieldNumber;
const int TimestampDuration::kRepTsFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

TimestampDuration::TimestampDuration()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimestampDuration.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:google.protobuf.testing.TimestampDuration)
}
TimestampDuration::TimestampDuration(const TimestampDuration& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      rep_ts_(from.rep_ts_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_ts()) {
    ts_ = new ::google::protobuf::Timestamp(*from.ts_);
  } else {
    ts_ = NULL;
  }
  if (from.has_dur()) {
    dur_ = new ::google::protobuf::Duration(*from.dur_);
  } else {
    dur_ = NULL;
  }
  // @@protoc_insertion_point(copy_constructor:google.protobuf.testing.TimestampDuration)
}

void TimestampDuration::SharedCtor() {
  ::memset(&ts_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&dur_) -
      reinterpret_cast<char*>(&ts_)) + sizeof(dur_));
}

TimestampDuration::~TimestampDuration() {
  // @@protoc_insertion_point(destructor:google.protobuf.testing.TimestampDuration)
  SharedDtor();
}

void TimestampDuration::SharedDtor() {
  if (this != internal_default_instance()) delete ts_;
  if (this != internal_default_instance()) delete dur_;
}

void TimestampDuration::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* TimestampDuration::descriptor() {
  ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const TimestampDuration& TimestampDuration::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::scc_info_TimestampDuration.base);
  return *internal_default_instance();
}


void TimestampDuration::Clear() {
// @@protoc_insertion_point(message_clear_start:google.protobuf.testing.TimestampDuration)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  rep_ts_.Clear();
  if (GetArenaNoVirtual() == NULL && ts_ != NULL) {
    delete ts_;
  }
  ts_ = NULL;
  if (GetArenaNoVirtual() == NULL && dur_ != NULL) {
    delete dur_;
  }
  dur_ = NULL;
  _internal_metadata_.Clear();
}

bool TimestampDuration::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:google.protobuf.testing.TimestampDuration)
  for (;;) {
    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // .google.protobuf.Timestamp ts = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_ts()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // .google.protobuf.Duration dur = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(18u /* 18 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
               input, mutable_dur()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .google.protobuf.Timestamp rep_ts = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(26u /* 26 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
                input, add_rep_ts()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:google.protobuf.testing.TimestampDuration)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:google.protobuf.testing.TimestampDuration)
  return false;
#undef DO_
}

void TimestampDuration::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:google.protobuf.testing.TimestampDuration)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Timestamp ts = 1;
  if (this->has_ts()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->_internal_ts(), output);
  }

  // .google.protobuf.Duration dur = 2;
  if (this->has_dur()) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      2, this->_internal_dur(), output);
  }

  // repeated .google.protobuf.Timestamp rep_ts = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->rep_ts_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      3,
      this->rep_ts(static_cast<int>(i)),
      output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:google.protobuf.testing.TimestampDuration)
}

::google::protobuf::uint8* TimestampDuration::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:google.protobuf.testing.TimestampDuration)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // .google.protobuf.Timestamp ts = 1;
  if (this->has_ts()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->_internal_ts(), deterministic, target);
  }

  // .google.protobuf.Duration dur = 2;
  if (this->has_dur()) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        2, this->_internal_dur(), deterministic, target);
  }

  // repeated .google.protobuf.Timestamp rep_ts = 3;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->rep_ts_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        3, this->rep_ts(static_cast<int>(i)), deterministic, target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:google.protobuf.testing.TimestampDuration)
  return target;
}

size_t TimestampDuration::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:google.protobuf.testing.TimestampDuration)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // repeated .google.protobuf.Timestamp rep_ts = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->rep_ts_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->rep_ts(static_cast<int>(i)));
    }
  }

  // .google.protobuf.Timestamp ts = 1;
  if (this->has_ts()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *ts_);
  }

  // .google.protobuf.Duration dur = 2;
  if (this->has_dur()) {
    total_size += 1 +
      ::google::protobuf::internal::WireFormatLite::MessageSize(
        *dur_);
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void TimestampDuration::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:google.protobuf.testing.TimestampDuration)
  GOOGLE_DCHECK_NE(&from, this);
  const TimestampDuration* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const TimestampDuration>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:google.protobuf.testing.TimestampDuration)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:google.protobuf.testing.TimestampDuration)
    MergeFrom(*source);
  }
}

void TimestampDuration::MergeFrom(const TimestampDuration& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:google.protobuf.testing.TimestampDuration)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  rep_ts_.MergeFrom(from.rep_ts_);
  if (from.has_ts()) {
    mutable_ts()->::google::protobuf::Timestamp::MergeFrom(from.ts());
  }
  if (from.has_dur()) {
    mutable_dur()->::google::protobuf::Duration::MergeFrom(from.dur());
  }
}

void TimestampDuration::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:google.protobuf.testing.TimestampDuration)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void TimestampDuration::CopyFrom(const TimestampDuration& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:google.protobuf.testing.TimestampDuration)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool TimestampDuration::IsInitialized() const {
  return true;
}

void TimestampDuration::Swap(TimestampDuration* other) {
  if (other == this) return;
  InternalSwap(other);
}
void TimestampDuration::InternalSwap(TimestampDuration* other) {
  using std::swap;
  CastToBase(&rep_ts_)->InternalSwap(CastToBase(&other->rep_ts_));
  swap(ts_, other->ts_);
  swap(dur_, other->dur_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

::google::protobuf::Metadata TimestampDuration::GetMetadata() const {
  protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_google_2fprotobuf_2futil_2finternal_2ftestdata_2ftimestamp_5fduration_2eproto::file_level_metadata[kIndexInFileMessages];
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace testing
}  // namespace protobuf
}  // namespace google
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::TimestampDurationTestCases* Arena::CreateMaybeMessage< ::google::protobuf::testing::TimestampDurationTestCases >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::TimestampDurationTestCases >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::TimeStampType* Arena::CreateMaybeMessage< ::google::protobuf::testing::TimeStampType >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::TimeStampType >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::DurationType* Arena::CreateMaybeMessage< ::google::protobuf::testing::DurationType >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::DurationType >(arena);
}
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::google::protobuf::testing::TimestampDuration* Arena::CreateMaybeMessage< ::google::protobuf::testing::TimestampDuration >(Arena* arena) {
  return Arena::CreateInternal< ::google::protobuf::testing::TimestampDuration >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
