// DO NOT EDIT.
//
// Generated by the Swift generator plugin for the protocol buffer compiler.
// Source: google/protobuf/unittest_custom_options.proto
//
// For information on using the generated types, please see the documenation:
//   https://github.com/apple/swift-protobuf/

// Protocol Buffers - Google's data interchange format
// Copyright 2008 Google Inc.  All rights reserved.
// https://developers.google.com/protocol-buffers/
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
//     * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
//     * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

// Author: benjy@google.com (Benjy Weinberger)
//  Based on original Protocol Buffers design by
//  Sanjay Ghemawat, Jeff Dean, and others.
//
// A proto file used to test the "custom options" feature of google.protobuf.

import Foundation
import SwiftProtobuf

// If the compiler emits an error on this type, it is because this file
// was generated by a version of the `protoc` Swift plug-in that is
// incompatible with the version of SwiftProtobuf to which you are linking.
// Please ensure that your are building against the same version of the API
// that was used to generate this file.
fileprivate struct _GeneratedWithProtocGenSwiftVersion: SwiftProtobuf.ProtobufAPIVersionCheck {
  struct _2: SwiftProtobuf.ProtobufAPIVersion_2 {}
  typealias Version = _2
}

enum ProtobufUnittest_MethodOpt1: SwiftProtobuf.Enum {
  typealias RawValue = Int
  case val1 // = 1
  case val2 // = 2

  init() {
    self = .val1
  }

  init?(rawValue: Int) {
    switch rawValue {
    case 1: self = .val1
    case 2: self = .val2
    default: return nil
    }
  }

  var rawValue: Int {
    switch self {
    case .val1: return 1
    case .val2: return 2
    }
  }

}

#if swift(>=4.2)

extension ProtobufUnittest_MethodOpt1: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

enum ProtobufUnittest_AggregateEnum: SwiftProtobuf.Enum {
  typealias RawValue = Int
  case value // = 1

  init() {
    self = .value
  }

  init?(rawValue: Int) {
    switch rawValue {
    case 1: self = .value
    default: return nil
    }
  }

  var rawValue: Int {
    switch self {
    case .value: return 1
    }
  }

}

#if swift(>=4.2)

extension ProtobufUnittest_AggregateEnum: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

/// A test message with custom options at all possible locations (and also some
/// regular options, to make sure they interact nicely).
struct ProtobufUnittest_TestMessageWithCustomOptions {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var field1: String {
    get {return _field1 ?? String()}
    set {_field1 = newValue}
  }
  /// Returns true if `field1` has been explicitly set.
  var hasField1: Bool {return self._field1 != nil}
  /// Clears the value of `field1`. Subsequent reads from it will return its default value.
  mutating func clearField1() {self._field1 = nil}

  var anOneof: ProtobufUnittest_TestMessageWithCustomOptions.OneOf_AnOneof? = nil

  var oneofField: Int32 {
    get {
      if case .oneofField(let v)? = anOneof {return v}
      return 0
    }
    set {anOneof = .oneofField(newValue)}
  }

  var unknownFields = SwiftProtobuf.UnknownStorage()

  enum OneOf_AnOneof: Equatable {
    case oneofField(Int32)

  #if !swift(>=4.1)
    static func ==(lhs: ProtobufUnittest_TestMessageWithCustomOptions.OneOf_AnOneof, rhs: ProtobufUnittest_TestMessageWithCustomOptions.OneOf_AnOneof) -> Bool {
      switch (lhs, rhs) {
      case (.oneofField(let l), .oneofField(let r)): return l == r
      }
    }
  #endif
  }

  enum AnEnum: SwiftProtobuf.Enum {
    typealias RawValue = Int
    case val1 // = 1
    case val2 // = 2

    init() {
      self = .val1
    }

    init?(rawValue: Int) {
      switch rawValue {
      case 1: self = .val1
      case 2: self = .val2
      default: return nil
      }
    }

    var rawValue: Int {
      switch self {
      case .val1: return 1
      case .val2: return 2
      }
    }

  }

  init() {}

  fileprivate var _field1: String? = nil
}

#if swift(>=4.2)

extension ProtobufUnittest_TestMessageWithCustomOptions.AnEnum: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

/// A test RPC service with custom options at all possible locations (and also
/// some regular options, to make sure they interact nicely).
struct ProtobufUnittest_CustomOptionFooRequest {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionFooResponse {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionFooClientMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionFooServerMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_DummyMessageContainingEnum {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  enum TestEnumType: SwiftProtobuf.Enum {
    typealias RawValue = Int
    case testOptionEnumType1 // = 22
    case testOptionEnumType2 // = -23

    init() {
      self = .testOptionEnumType1
    }

    init?(rawValue: Int) {
      switch rawValue {
      case -23: self = .testOptionEnumType2
      case 22: self = .testOptionEnumType1
      default: return nil
      }
    }

    var rawValue: Int {
      switch self {
      case .testOptionEnumType2: return -23
      case .testOptionEnumType1: return 22
      }
    }

  }

  init() {}
}

#if swift(>=4.2)

extension ProtobufUnittest_DummyMessageContainingEnum.TestEnumType: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

struct ProtobufUnittest_DummyMessageInvalidAsOptionType {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionMinIntegerValues {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionMaxIntegerValues {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_CustomOptionOtherValues {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_SettingRealsFromPositiveInts {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_SettingRealsFromNegativeInts {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_ComplexOptionType1: SwiftProtobuf.ExtensibleMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var foo: Int32 {
    get {return _foo ?? 0}
    set {_foo = newValue}
  }
  /// Returns true if `foo` has been explicitly set.
  var hasFoo: Bool {return self._foo != nil}
  /// Clears the value of `foo`. Subsequent reads from it will return its default value.
  mutating func clearFoo() {self._foo = nil}

  var foo2: Int32 {
    get {return _foo2 ?? 0}
    set {_foo2 = newValue}
  }
  /// Returns true if `foo2` has been explicitly set.
  var hasFoo2: Bool {return self._foo2 != nil}
  /// Clears the value of `foo2`. Subsequent reads from it will return its default value.
  mutating func clearFoo2() {self._foo2 = nil}

  var foo3: Int32 {
    get {return _foo3 ?? 0}
    set {_foo3 = newValue}
  }
  /// Returns true if `foo3` has been explicitly set.
  var hasFoo3: Bool {return self._foo3 != nil}
  /// Clears the value of `foo3`. Subsequent reads from it will return its default value.
  mutating func clearFoo3() {self._foo3 = nil}

  var foo4: [Int32] = []

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  var _protobuf_extensionFieldValues = SwiftProtobuf.ExtensionFieldValueSet()
  fileprivate var _foo: Int32? = nil
  fileprivate var _foo2: Int32? = nil
  fileprivate var _foo3: Int32? = nil
}

struct ProtobufUnittest_ComplexOptionType2: SwiftProtobuf.ExtensibleMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var bar: ProtobufUnittest_ComplexOptionType1 {
    get {return _storage._bar ?? ProtobufUnittest_ComplexOptionType1()}
    set {_uniqueStorage()._bar = newValue}
  }
  /// Returns true if `bar` has been explicitly set.
  var hasBar: Bool {return _storage._bar != nil}
  /// Clears the value of `bar`. Subsequent reads from it will return its default value.
  mutating func clearBar() {_uniqueStorage()._bar = nil}

  var baz: Int32 {
    get {return _storage._baz ?? 0}
    set {_uniqueStorage()._baz = newValue}
  }
  /// Returns true if `baz` has been explicitly set.
  var hasBaz: Bool {return _storage._baz != nil}
  /// Clears the value of `baz`. Subsequent reads from it will return its default value.
  mutating func clearBaz() {_uniqueStorage()._baz = nil}

  var fred: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4 {
    get {return _storage._fred ?? ProtobufUnittest_ComplexOptionType2.ComplexOptionType4()}
    set {_uniqueStorage()._fred = newValue}
  }
  /// Returns true if `fred` has been explicitly set.
  var hasFred: Bool {return _storage._fred != nil}
  /// Clears the value of `fred`. Subsequent reads from it will return its default value.
  mutating func clearFred() {_uniqueStorage()._fred = nil}

  var barney: [ProtobufUnittest_ComplexOptionType2.ComplexOptionType4] {
    get {return _storage._barney}
    set {_uniqueStorage()._barney = newValue}
  }

  var unknownFields = SwiftProtobuf.UnknownStorage()

  struct ComplexOptionType4 {
    // SwiftProtobuf.Message conformance is added in an extension below. See the
    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
    // methods supported on all messages.

    var waldo: Int32 {
      get {return _waldo ?? 0}
      set {_waldo = newValue}
    }
    /// Returns true if `waldo` has been explicitly set.
    var hasWaldo: Bool {return self._waldo != nil}
    /// Clears the value of `waldo`. Subsequent reads from it will return its default value.
    mutating func clearWaldo() {self._waldo = nil}

    var unknownFields = SwiftProtobuf.UnknownStorage()

    init() {}

    fileprivate var _waldo: Int32? = nil
  }

  init() {}

  var _protobuf_extensionFieldValues = SwiftProtobuf.ExtensionFieldValueSet()
  fileprivate var _storage = _StorageClass.defaultInstance
}

struct ProtobufUnittest_ComplexOptionType3 {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var qux: Int32 {
    get {return _storage._qux ?? 0}
    set {_uniqueStorage()._qux = newValue}
  }
  /// Returns true if `qux` has been explicitly set.
  var hasQux: Bool {return _storage._qux != nil}
  /// Clears the value of `qux`. Subsequent reads from it will return its default value.
  mutating func clearQux() {_uniqueStorage()._qux = nil}

  var complexOptionType5: ProtobufUnittest_ComplexOptionType3.ComplexOptionType5 {
    get {return _storage._complexOptionType5 ?? ProtobufUnittest_ComplexOptionType3.ComplexOptionType5()}
    set {_uniqueStorage()._complexOptionType5 = newValue}
  }
  /// Returns true if `complexOptionType5` has been explicitly set.
  var hasComplexOptionType5: Bool {return _storage._complexOptionType5 != nil}
  /// Clears the value of `complexOptionType5`. Subsequent reads from it will return its default value.
  mutating func clearComplexOptionType5() {_uniqueStorage()._complexOptionType5 = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  struct ComplexOptionType5 {
    // SwiftProtobuf.Message conformance is added in an extension below. See the
    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
    // methods supported on all messages.

    var plugh: Int32 {
      get {return _plugh ?? 0}
      set {_plugh = newValue}
    }
    /// Returns true if `plugh` has been explicitly set.
    var hasPlugh: Bool {return self._plugh != nil}
    /// Clears the value of `plugh`. Subsequent reads from it will return its default value.
    mutating func clearPlugh() {self._plugh = nil}

    var unknownFields = SwiftProtobuf.UnknownStorage()

    init() {}

    fileprivate var _plugh: Int32? = nil
  }

  init() {}

  fileprivate var _storage = _StorageClass.defaultInstance
}

struct ProtobufUnittest_ComplexOpt6 {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var xyzzy: Int32 {
    get {return _xyzzy ?? 0}
    set {_xyzzy = newValue}
  }
  /// Returns true if `xyzzy` has been explicitly set.
  var hasXyzzy: Bool {return self._xyzzy != nil}
  /// Clears the value of `xyzzy`. Subsequent reads from it will return its default value.
  mutating func clearXyzzy() {self._xyzzy = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _xyzzy: Int32? = nil
}

/// Note that we try various different ways of naming the same extension.
struct ProtobufUnittest_VariousComplexOptions {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

struct ProtobufUnittest_AggregateMessageSet: SwiftProtobuf.ExtensibleMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  var _protobuf_extensionFieldValues = SwiftProtobuf.ExtensionFieldValueSet()
}

struct ProtobufUnittest_AggregateMessageSetElement {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var s: String {
    get {return _s ?? String()}
    set {_s = newValue}
  }
  /// Returns true if `s` has been explicitly set.
  var hasS: Bool {return self._s != nil}
  /// Clears the value of `s`. Subsequent reads from it will return its default value.
  mutating func clearS() {self._s = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _s: String? = nil
}

/// A helper type used to test aggregate option parsing
struct ProtobufUnittest_Aggregate {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var i: Int32 {
    get {return _storage._i ?? 0}
    set {_uniqueStorage()._i = newValue}
  }
  /// Returns true if `i` has been explicitly set.
  var hasI: Bool {return _storage._i != nil}
  /// Clears the value of `i`. Subsequent reads from it will return its default value.
  mutating func clearI() {_uniqueStorage()._i = nil}

  var s: String {
    get {return _storage._s ?? String()}
    set {_uniqueStorage()._s = newValue}
  }
  /// Returns true if `s` has been explicitly set.
  var hasS: Bool {return _storage._s != nil}
  /// Clears the value of `s`. Subsequent reads from it will return its default value.
  mutating func clearS() {_uniqueStorage()._s = nil}

  /// A nested object
  var sub: ProtobufUnittest_Aggregate {
    get {return _storage._sub ?? ProtobufUnittest_Aggregate()}
    set {_uniqueStorage()._sub = newValue}
  }
  /// Returns true if `sub` has been explicitly set.
  var hasSub: Bool {return _storage._sub != nil}
  /// Clears the value of `sub`. Subsequent reads from it will return its default value.
  mutating func clearSub() {_uniqueStorage()._sub = nil}

  /// To test the parsing of extensions inside aggregate values
  var file: Google_Protobuf_FileOptions {
    get {return _storage._file ?? Google_Protobuf_FileOptions()}
    set {_uniqueStorage()._file = newValue}
  }
  /// Returns true if `file` has been explicitly set.
  var hasFile: Bool {return _storage._file != nil}
  /// Clears the value of `file`. Subsequent reads from it will return its default value.
  mutating func clearFile() {_uniqueStorage()._file = nil}

  /// An embedded message set
  var mset: ProtobufUnittest_AggregateMessageSet {
    get {return _storage._mset ?? ProtobufUnittest_AggregateMessageSet()}
    set {_uniqueStorage()._mset = newValue}
  }
  /// Returns true if `mset` has been explicitly set.
  var hasMset: Bool {return _storage._mset != nil}
  /// Clears the value of `mset`. Subsequent reads from it will return its default value.
  mutating func clearMset() {_uniqueStorage()._mset = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _storage = _StorageClass.defaultInstance
}

struct ProtobufUnittest_AggregateMessage {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var fieldname: Int32 {
    get {return _fieldname ?? 0}
    set {_fieldname = newValue}
  }
  /// Returns true if `fieldname` has been explicitly set.
  var hasFieldname: Bool {return self._fieldname != nil}
  /// Clears the value of `fieldname`. Subsequent reads from it will return its default value.
  mutating func clearFieldname() {self._fieldname = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}

  fileprivate var _fieldname: Int32? = nil
}

/// Test custom options for nested type.
struct ProtobufUnittest_NestedOptionType {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  enum NestedEnum: SwiftProtobuf.Enum {
    typealias RawValue = Int
    case value // = 1

    init() {
      self = .value
    }

    init?(rawValue: Int) {
      switch rawValue {
      case 1: self = .value
      default: return nil
      }
    }

    var rawValue: Int {
      switch self {
      case .value: return 1
      }
    }

  }

  struct NestedMessage {
    // SwiftProtobuf.Message conformance is added in an extension below. See the
    // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
    // methods supported on all messages.

    var nestedField: Int32 {
      get {return _nestedField ?? 0}
      set {_nestedField = newValue}
    }
    /// Returns true if `nestedField` has been explicitly set.
    var hasNestedField: Bool {return self._nestedField != nil}
    /// Clears the value of `nestedField`. Subsequent reads from it will return its default value.
    mutating func clearNestedField() {self._nestedField = nil}

    var unknownFields = SwiftProtobuf.UnknownStorage()

    init() {}

    fileprivate var _nestedField: Int32? = nil
  }

  init() {}
}

#if swift(>=4.2)

extension ProtobufUnittest_NestedOptionType.NestedEnum: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

/// Custom message option that has a required enum field.
/// WARNING: this is strongly discouraged!
struct ProtobufUnittest_OldOptionType {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var value: ProtobufUnittest_OldOptionType.TestEnum {
    get {return _value ?? .oldValue}
    set {_value = newValue}
  }
  /// Returns true if `value` has been explicitly set.
  var hasValue: Bool {return self._value != nil}
  /// Clears the value of `value`. Subsequent reads from it will return its default value.
  mutating func clearValue() {self._value = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  enum TestEnum: SwiftProtobuf.Enum {
    typealias RawValue = Int
    case oldValue // = 0

    init() {
      self = .oldValue
    }

    init?(rawValue: Int) {
      switch rawValue {
      case 0: self = .oldValue
      default: return nil
      }
    }

    var rawValue: Int {
      switch self {
      case .oldValue: return 0
      }
    }

  }

  init() {}

  fileprivate var _value: ProtobufUnittest_OldOptionType.TestEnum? = nil
}

#if swift(>=4.2)

extension ProtobufUnittest_OldOptionType.TestEnum: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

/// Updated version of the custom option above.
struct ProtobufUnittest_NewOptionType {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var value: ProtobufUnittest_NewOptionType.TestEnum {
    get {return _value ?? .oldValue}
    set {_value = newValue}
  }
  /// Returns true if `value` has been explicitly set.
  var hasValue: Bool {return self._value != nil}
  /// Clears the value of `value`. Subsequent reads from it will return its default value.
  mutating func clearValue() {self._value = nil}

  var unknownFields = SwiftProtobuf.UnknownStorage()

  enum TestEnum: SwiftProtobuf.Enum {
    typealias RawValue = Int
    case oldValue // = 0
    case newValue // = 1

    init() {
      self = .oldValue
    }

    init?(rawValue: Int) {
      switch rawValue {
      case 0: self = .oldValue
      case 1: self = .newValue
      default: return nil
      }
    }

    var rawValue: Int {
      switch self {
      case .oldValue: return 0
      case .newValue: return 1
      }
    }

  }

  init() {}

  fileprivate var _value: ProtobufUnittest_NewOptionType.TestEnum? = nil
}

#if swift(>=4.2)

extension ProtobufUnittest_NewOptionType.TestEnum: CaseIterable {
  // Support synthesized by the compiler.
}

#endif  // swift(>=4.2)

/// Test message using the "required_enum_opt" option defined above.
struct ProtobufUnittest_TestMessageWithRequiredEnumOption {
  // SwiftProtobuf.Message conformance is added in an extension below. See the
  // `Message` and `Message+*Additions` files in the SwiftProtobuf library for
  // methods supported on all messages.

  var unknownFields = SwiftProtobuf.UnknownStorage()

  init() {}
}

// MARK: - Extension support defined in unittest_custom_options.proto.

extension Google_Protobuf_EnumOptions {

  var ProtobufUnittest_enumOpt1: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_enum_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_enumOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_enum_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_enumOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt1)
  }

  var ProtobufUnittest_enumopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_enumopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_enumopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_enumopt`
  /// has been explicitly set.
  var hasProtobufUnittest_enumopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_enumopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_enumopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_enumopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_enumopt)
  }
}

extension Google_Protobuf_EnumValueOptions {

  var ProtobufUnittest_enumValueOpt1: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_enum_value_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_enum_value_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_enum_value_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_enumValueOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_enum_value_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_enum_value_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_enumValueOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_enum_value_opt1)
  }

  var ProtobufUnittest_enumvalopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_enumvalopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_enumvalopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_enumvalopt`
  /// has been explicitly set.
  var hasProtobufUnittest_enumvalopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_enumvalopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_enumvalopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_enumvalopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_enumvalopt)
  }
}

extension Google_Protobuf_FieldOptions {

  var ProtobufUnittest_fieldOpt1: UInt64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_field_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_field_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_field_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_fieldOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_field_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_field_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fieldOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_field_opt1)
  }

  /// This is useful for testing that we correctly register default values for
  /// extension options.
  var ProtobufUnittest_fieldOpt2: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_field_opt2) ?? 42}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_field_opt2, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_field_opt2`
  /// has been explicitly set.
  var hasProtobufUnittest_fieldOpt2: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_field_opt2)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_field_opt2`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fieldOpt2() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_field_opt2)
  }

  var ProtobufUnittest_fieldopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_fieldopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_fieldopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_fieldopt`
  /// has been explicitly set.
  var hasProtobufUnittest_fieldopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_fieldopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_fieldopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fieldopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_fieldopt)
  }
}

extension Google_Protobuf_FileOptions {

  var ProtobufUnittest_fileOpt1: UInt64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_file_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_file_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_file_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_fileOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_file_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_file_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fileOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_file_opt1)
  }

  var ProtobufUnittest_fileopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_fileopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_fileopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_fileopt`
  /// has been explicitly set.
  var hasProtobufUnittest_fileopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_fileopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_fileopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fileopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_fileopt)
  }

  var ProtobufUnittest_Aggregate_nested: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Aggregate.Extensions.nested) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Aggregate.Extensions.nested, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Aggregate.Extensions.nested`
  /// has been explicitly set.
  var hasProtobufUnittest_Aggregate_nested: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Aggregate.Extensions.nested)
  }
  /// Clears the value of extension `ProtobufUnittest_Aggregate.Extensions.nested`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_Aggregate_nested() {
    clearExtensionValue(ext: ProtobufUnittest_Aggregate.Extensions.nested)
  }

  var ProtobufUnittest_NestedOptionType_nestedExtension: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_NestedOptionType.Extensions.nested_extension) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_NestedOptionType.Extensions.nested_extension, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_NestedOptionType.Extensions.nested_extension`
  /// has been explicitly set.
  var hasProtobufUnittest_NestedOptionType_nestedExtension: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_NestedOptionType.Extensions.nested_extension)
  }
  /// Clears the value of extension `ProtobufUnittest_NestedOptionType.Extensions.nested_extension`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_NestedOptionType_nestedExtension() {
    clearExtensionValue(ext: ProtobufUnittest_NestedOptionType.Extensions.nested_extension)
  }
}

extension Google_Protobuf_MessageOptions {

  var ProtobufUnittest_messageOpt1: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_message_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_message_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_message_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_messageOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_message_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_message_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_messageOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_message_opt1)
  }

  var ProtobufUnittest_boolOpt: Bool {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_bool_opt) ?? false}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_bool_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_bool_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_boolOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_bool_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_bool_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_boolOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_bool_opt)
  }

  var ProtobufUnittest_int32Opt: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_int32_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_int32_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_int32_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_int32Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_int32_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_int32_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_int32Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_int32_opt)
  }

  var ProtobufUnittest_int64Opt: Int64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_int64_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_int64_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_int64_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_int64Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_int64_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_int64_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_int64Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_int64_opt)
  }

  var ProtobufUnittest_uint32Opt: UInt32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_uint32_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_uint32_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_uint32_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_uint32Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_uint32_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_uint32_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_uint32Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_uint32_opt)
  }

  var ProtobufUnittest_uint64Opt: UInt64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_uint64_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_uint64_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_uint64_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_uint64Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_uint64_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_uint64_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_uint64Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_uint64_opt)
  }

  var ProtobufUnittest_sint32Opt: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_sint32_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_sint32_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_sint32_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_sint32Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_sint32_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_sint32_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_sint32Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_sint32_opt)
  }

  var ProtobufUnittest_sint64Opt: Int64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_sint64_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_sint64_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_sint64_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_sint64Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_sint64_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_sint64_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_sint64Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_sint64_opt)
  }

  var ProtobufUnittest_fixed32Opt: UInt32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_fixed32_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_fixed32_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_fixed32_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_fixed32Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_fixed32_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_fixed32_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fixed32Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_fixed32_opt)
  }

  var ProtobufUnittest_fixed64Opt: UInt64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_fixed64_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_fixed64_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_fixed64_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_fixed64Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_fixed64_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_fixed64_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_fixed64Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_fixed64_opt)
  }

  var ProtobufUnittest_sfixed32Opt: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_sfixed32_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_sfixed32_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_sfixed32_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_sfixed32Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_sfixed32_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_sfixed32_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_sfixed32Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_sfixed32_opt)
  }

  var ProtobufUnittest_sfixed64Opt: Int64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_sfixed64_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_sfixed64_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_sfixed64_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_sfixed64Opt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_sfixed64_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_sfixed64_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_sfixed64Opt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_sfixed64_opt)
  }

  var ProtobufUnittest_floatOpt: Float {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_float_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_float_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_float_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_floatOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_float_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_float_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_floatOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_float_opt)
  }

  var ProtobufUnittest_doubleOpt: Double {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_double_opt) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_double_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_double_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_doubleOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_double_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_double_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_doubleOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_double_opt)
  }

  var ProtobufUnittest_stringOpt: String {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_string_opt) ?? String()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_string_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_string_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_stringOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_string_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_string_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_stringOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_string_opt)
  }

  var ProtobufUnittest_bytesOpt: Data {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_bytes_opt) ?? SwiftProtobuf.Internal.emptyData}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_bytes_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_bytes_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_bytesOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_bytes_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_bytes_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_bytesOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_bytes_opt)
  }

  var ProtobufUnittest_enumOpt: ProtobufUnittest_DummyMessageContainingEnum.TestEnumType {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt) ?? .testOptionEnumType1}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_enum_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_enumOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_enum_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_enumOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_enum_opt)
  }

  var ProtobufUnittest_messageTypeOpt: ProtobufUnittest_DummyMessageInvalidAsOptionType {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_message_type_opt) ?? ProtobufUnittest_DummyMessageInvalidAsOptionType()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_message_type_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_message_type_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_messageTypeOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_message_type_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_message_type_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_messageTypeOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_message_type_opt)
  }

  var ProtobufUnittest_complexOpt1: ProtobufUnittest_ComplexOptionType1 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt1) ?? ProtobufUnittest_ComplexOptionType1()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_complex_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_complexOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_complex_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_complexOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt1)
  }

  var ProtobufUnittest_complexOpt2: ProtobufUnittest_ComplexOptionType2 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt2) ?? ProtobufUnittest_ComplexOptionType2()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt2, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_complex_opt2`
  /// has been explicitly set.
  var hasProtobufUnittest_complexOpt2: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt2)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_complex_opt2`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_complexOpt2() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt2)
  }

  var ProtobufUnittest_complexOpt3: ProtobufUnittest_ComplexOptionType3 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt3) ?? ProtobufUnittest_ComplexOptionType3()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt3, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_complex_opt3`
  /// has been explicitly set.
  var hasProtobufUnittest_complexOpt3: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt3)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_complex_opt3`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_complexOpt3() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_complex_opt3)
  }

  var ProtobufUnittest_complexOpt6: ProtobufUnittest_ComplexOpt6 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_ComplexOpt6) ?? ProtobufUnittest_ComplexOpt6()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_ComplexOpt6, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_ComplexOpt6`
  /// has been explicitly set.
  var hasProtobufUnittest_complexOpt6: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_ComplexOpt6)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_ComplexOpt6`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_complexOpt6() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_ComplexOpt6)
  }

  var ProtobufUnittest_msgopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_msgopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_msgopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_msgopt`
  /// has been explicitly set.
  var hasProtobufUnittest_msgopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_msgopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_msgopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_msgopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_msgopt)
  }

  var ProtobufUnittest_requiredEnumOpt: ProtobufUnittest_OldOptionType {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_required_enum_opt) ?? ProtobufUnittest_OldOptionType()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_required_enum_opt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_required_enum_opt`
  /// has been explicitly set.
  var hasProtobufUnittest_requiredEnumOpt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_required_enum_opt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_required_enum_opt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_requiredEnumOpt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_required_enum_opt)
  }

  var ProtobufUnittest_ComplexOptionType2_ComplexOptionType4_complexOpt4: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4 {
    get {return getExtensionValue(ext: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4) ?? ProtobufUnittest_ComplexOptionType2.ComplexOptionType4()}
    set {setExtensionValue(ext: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4`
  /// has been explicitly set.
  var hasProtobufUnittest_ComplexOptionType2_ComplexOptionType4_complexOpt4: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4)
  }
  /// Clears the value of extension `ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_ComplexOptionType2_ComplexOptionType4_complexOpt4() {
    clearExtensionValue(ext: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4)
  }
}

extension Google_Protobuf_MethodOptions {

  var ProtobufUnittest_methodOpt1: ProtobufUnittest_MethodOpt1 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_method_opt1) ?? .val1}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_method_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_method_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_methodOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_method_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_method_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_methodOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_method_opt1)
  }

  var ProtobufUnittest_methodopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_methodopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_methodopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_methodopt`
  /// has been explicitly set.
  var hasProtobufUnittest_methodopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_methodopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_methodopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_methodopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_methodopt)
  }
}

extension Google_Protobuf_OneofOptions {

  var ProtobufUnittest_oneofOpt1: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_oneof_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_oneof_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_oneof_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_oneofOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_oneof_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_oneof_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_oneofOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_oneof_opt1)
  }
}

extension Google_Protobuf_ServiceOptions {

  var ProtobufUnittest_serviceOpt1: Int64 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_service_opt1) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_service_opt1, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_service_opt1`
  /// has been explicitly set.
  var hasProtobufUnittest_serviceOpt1: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_service_opt1)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_service_opt1`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_serviceOpt1() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_service_opt1)
  }

  var ProtobufUnittest_serviceopt: ProtobufUnittest_Aggregate {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_serviceopt) ?? ProtobufUnittest_Aggregate()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_serviceopt, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_serviceopt`
  /// has been explicitly set.
  var hasProtobufUnittest_serviceopt: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_serviceopt)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_serviceopt`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_serviceopt() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_serviceopt)
  }
}

extension ProtobufUnittest_AggregateMessageSet {

  var ProtobufUnittest_AggregateMessageSetElement_messageSetExtension: ProtobufUnittest_AggregateMessageSetElement {
    get {return getExtensionValue(ext: ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension) ?? ProtobufUnittest_AggregateMessageSetElement()}
    set {setExtensionValue(ext: ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension`
  /// has been explicitly set.
  var hasProtobufUnittest_AggregateMessageSetElement_messageSetExtension: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension)
  }
  /// Clears the value of extension `ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_AggregateMessageSetElement_messageSetExtension() {
    clearExtensionValue(ext: ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension)
  }
}

extension ProtobufUnittest_ComplexOptionType1 {

  var ProtobufUnittest_quux: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_quux) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_quux, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_quux`
  /// has been explicitly set.
  var hasProtobufUnittest_quux: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_quux)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_quux`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_quux() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_quux)
  }

  var ProtobufUnittest_corge: ProtobufUnittest_ComplexOptionType3 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_corge) ?? ProtobufUnittest_ComplexOptionType3()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_corge, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_corge`
  /// has been explicitly set.
  var hasProtobufUnittest_corge: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_corge)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_corge`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_corge() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_corge)
  }
}

extension ProtobufUnittest_ComplexOptionType2 {

  var ProtobufUnittest_grault: Int32 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_grault) ?? 0}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_grault, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_grault`
  /// has been explicitly set.
  var hasProtobufUnittest_grault: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_grault)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_grault`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_grault() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_grault)
  }

  var ProtobufUnittest_garply: ProtobufUnittest_ComplexOptionType1 {
    get {return getExtensionValue(ext: ProtobufUnittest_Extensions_garply) ?? ProtobufUnittest_ComplexOptionType1()}
    set {setExtensionValue(ext: ProtobufUnittest_Extensions_garply, value: newValue)}
  }
  /// Returns true if extension `ProtobufUnittest_Extensions_garply`
  /// has been explicitly set.
  var hasProtobufUnittest_garply: Bool {
    return hasExtensionValue(ext: ProtobufUnittest_Extensions_garply)
  }
  /// Clears the value of extension `ProtobufUnittest_Extensions_garply`.
  /// Subsequent reads from it will return its default value.
  mutating func clearProtobufUnittest_garply() {
    clearExtensionValue(ext: ProtobufUnittest_Extensions_garply)
  }

}

/// A `SwiftProtobuf.SimpleExtensionMap` that includes all of the extensions defined by
/// this .proto file. It can be used any place an `SwiftProtobuf.ExtensionMap` is needed
/// in parsing, or it can be combined with other `SwiftProtobuf.SimpleExtensionMap`s to create
/// a larger `SwiftProtobuf.SimpleExtensionMap`.
let ProtobufUnittest_UnittestCustomOptions_Extensions: SwiftProtobuf.SimpleExtensionMap = [
  ProtobufUnittest_Extensions_file_opt1,
  ProtobufUnittest_Extensions_message_opt1,
  ProtobufUnittest_Extensions_field_opt1,
  ProtobufUnittest_Extensions_field_opt2,
  ProtobufUnittest_Extensions_oneof_opt1,
  ProtobufUnittest_Extensions_enum_opt1,
  ProtobufUnittest_Extensions_enum_value_opt1,
  ProtobufUnittest_Extensions_service_opt1,
  ProtobufUnittest_Extensions_method_opt1,
  ProtobufUnittest_Extensions_bool_opt,
  ProtobufUnittest_Extensions_int32_opt,
  ProtobufUnittest_Extensions_int64_opt,
  ProtobufUnittest_Extensions_uint32_opt,
  ProtobufUnittest_Extensions_uint64_opt,
  ProtobufUnittest_Extensions_sint32_opt,
  ProtobufUnittest_Extensions_sint64_opt,
  ProtobufUnittest_Extensions_fixed32_opt,
  ProtobufUnittest_Extensions_fixed64_opt,
  ProtobufUnittest_Extensions_sfixed32_opt,
  ProtobufUnittest_Extensions_sfixed64_opt,
  ProtobufUnittest_Extensions_float_opt,
  ProtobufUnittest_Extensions_double_opt,
  ProtobufUnittest_Extensions_string_opt,
  ProtobufUnittest_Extensions_bytes_opt,
  ProtobufUnittest_Extensions_enum_opt,
  ProtobufUnittest_Extensions_message_type_opt,
  ProtobufUnittest_Extensions_quux,
  ProtobufUnittest_Extensions_corge,
  ProtobufUnittest_Extensions_grault,
  ProtobufUnittest_Extensions_garply,
  ProtobufUnittest_Extensions_complex_opt1,
  ProtobufUnittest_Extensions_complex_opt2,
  ProtobufUnittest_Extensions_complex_opt3,
  ProtobufUnittest_Extensions_ComplexOpt6,
  ProtobufUnittest_Extensions_fileopt,
  ProtobufUnittest_Extensions_msgopt,
  ProtobufUnittest_Extensions_fieldopt,
  ProtobufUnittest_Extensions_enumopt,
  ProtobufUnittest_Extensions_enumvalopt,
  ProtobufUnittest_Extensions_serviceopt,
  ProtobufUnittest_Extensions_methodopt,
  ProtobufUnittest_Extensions_required_enum_opt,
  ProtobufUnittest_ComplexOptionType2.ComplexOptionType4.Extensions.complex_opt4,
  ProtobufUnittest_AggregateMessageSetElement.Extensions.message_set_extension,
  ProtobufUnittest_Aggregate.Extensions.nested,
  ProtobufUnittest_NestedOptionType.Extensions.nested_extension
]

let ProtobufUnittest_Extensions_file_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufUInt64>, Google_Protobuf_FileOptions>(
  _protobuf_fieldNumber: 7736974,
  fieldName: "protobuf_unittest.file_opt1"
)

let ProtobufUnittest_Extensions_message_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7739036,
  fieldName: "protobuf_unittest.message_opt1"
)

let ProtobufUnittest_Extensions_field_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufFixed64>, Google_Protobuf_FieldOptions>(
  _protobuf_fieldNumber: 7740936,
  fieldName: "protobuf_unittest.field_opt1"
)

/// This is useful for testing that we correctly register default values for
/// extension options.
let ProtobufUnittest_Extensions_field_opt2 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_FieldOptions>(
  _protobuf_fieldNumber: 7753913,
  fieldName: "protobuf_unittest.field_opt2"
)

let ProtobufUnittest_Extensions_oneof_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_OneofOptions>(
  _protobuf_fieldNumber: 7740111,
  fieldName: "protobuf_unittest.oneof_opt1"
)

let ProtobufUnittest_Extensions_enum_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSFixed32>, Google_Protobuf_EnumOptions>(
  _protobuf_fieldNumber: 7753576,
  fieldName: "protobuf_unittest.enum_opt1"
)

let ProtobufUnittest_Extensions_enum_value_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_EnumValueOptions>(
  _protobuf_fieldNumber: 1560678,
  fieldName: "protobuf_unittest.enum_value_opt1"
)

let ProtobufUnittest_Extensions_service_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSInt64>, Google_Protobuf_ServiceOptions>(
  _protobuf_fieldNumber: 7887650,
  fieldName: "protobuf_unittest.service_opt1"
)

let ProtobufUnittest_Extensions_method_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalEnumExtensionField<ProtobufUnittest_MethodOpt1>, Google_Protobuf_MethodOptions>(
  _protobuf_fieldNumber: 7890860,
  fieldName: "protobuf_unittest.method_opt1"
)

let ProtobufUnittest_Extensions_bool_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufBool>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7706090,
  fieldName: "protobuf_unittest.bool_opt"
)

let ProtobufUnittest_Extensions_int32_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7705709,
  fieldName: "protobuf_unittest.int32_opt"
)

let ProtobufUnittest_Extensions_int64_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt64>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7705542,
  fieldName: "protobuf_unittest.int64_opt"
)

let ProtobufUnittest_Extensions_uint32_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufUInt32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7704880,
  fieldName: "protobuf_unittest.uint32_opt"
)

let ProtobufUnittest_Extensions_uint64_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufUInt64>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7702367,
  fieldName: "protobuf_unittest.uint64_opt"
)

let ProtobufUnittest_Extensions_sint32_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSInt32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7701568,
  fieldName: "protobuf_unittest.sint32_opt"
)

let ProtobufUnittest_Extensions_sint64_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSInt64>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7700863,
  fieldName: "protobuf_unittest.sint64_opt"
)

let ProtobufUnittest_Extensions_fixed32_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufFixed32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7700307,
  fieldName: "protobuf_unittest.fixed32_opt"
)

let ProtobufUnittest_Extensions_fixed64_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufFixed64>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7700194,
  fieldName: "protobuf_unittest.fixed64_opt"
)

let ProtobufUnittest_Extensions_sfixed32_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSFixed32>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7698645,
  fieldName: "protobuf_unittest.sfixed32_opt"
)

let ProtobufUnittest_Extensions_sfixed64_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufSFixed64>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7685475,
  fieldName: "protobuf_unittest.sfixed64_opt"
)

let ProtobufUnittest_Extensions_float_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufFloat>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7675390,
  fieldName: "protobuf_unittest.float_opt"
)

let ProtobufUnittest_Extensions_double_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufDouble>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7673293,
  fieldName: "protobuf_unittest.double_opt"
)

let ProtobufUnittest_Extensions_string_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufString>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7673285,
  fieldName: "protobuf_unittest.string_opt"
)

let ProtobufUnittest_Extensions_bytes_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufBytes>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7673238,
  fieldName: "protobuf_unittest.bytes_opt"
)

let ProtobufUnittest_Extensions_enum_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalEnumExtensionField<ProtobufUnittest_DummyMessageContainingEnum.TestEnumType>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7673233,
  fieldName: "protobuf_unittest.enum_opt"
)

let ProtobufUnittest_Extensions_message_type_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_DummyMessageInvalidAsOptionType>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7665967,
  fieldName: "protobuf_unittest.message_type_opt"
)

let ProtobufUnittest_Extensions_quux = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, ProtobufUnittest_ComplexOptionType1>(
  _protobuf_fieldNumber: 7663707,
  fieldName: "protobuf_unittest.quux"
)

let ProtobufUnittest_Extensions_corge = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType3>, ProtobufUnittest_ComplexOptionType1>(
  _protobuf_fieldNumber: 7663442,
  fieldName: "protobuf_unittest.corge"
)

let ProtobufUnittest_Extensions_grault = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, ProtobufUnittest_ComplexOptionType2>(
  _protobuf_fieldNumber: 7650927,
  fieldName: "protobuf_unittest.grault"
)

let ProtobufUnittest_Extensions_garply = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType1>, ProtobufUnittest_ComplexOptionType2>(
  _protobuf_fieldNumber: 7649992,
  fieldName: "protobuf_unittest.garply"
)

let ProtobufUnittest_Extensions_complex_opt1 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType1>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7646756,
  fieldName: "protobuf_unittest.complex_opt1"
)

let ProtobufUnittest_Extensions_complex_opt2 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType2>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7636949,
  fieldName: "protobuf_unittest.complex_opt2"
)

let ProtobufUnittest_Extensions_complex_opt3 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType3>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7636463,
  fieldName: "protobuf_unittest.complex_opt3"
)

let ProtobufUnittest_Extensions_ComplexOpt6 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalGroupExtensionField<ProtobufUnittest_ComplexOpt6>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 7595468,
  fieldName: "protobuf_unittest.complexopt6"
)

let ProtobufUnittest_Extensions_fileopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_FileOptions>(
  _protobuf_fieldNumber: 15478479,
  fieldName: "protobuf_unittest.fileopt"
)

let ProtobufUnittest_Extensions_msgopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 15480088,
  fieldName: "protobuf_unittest.msgopt"
)

let ProtobufUnittest_Extensions_fieldopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_FieldOptions>(
  _protobuf_fieldNumber: 15481374,
  fieldName: "protobuf_unittest.fieldopt"
)

let ProtobufUnittest_Extensions_enumopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_EnumOptions>(
  _protobuf_fieldNumber: 15483218,
  fieldName: "protobuf_unittest.enumopt"
)

let ProtobufUnittest_Extensions_enumvalopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_EnumValueOptions>(
  _protobuf_fieldNumber: 15486921,
  fieldName: "protobuf_unittest.enumvalopt"
)

let ProtobufUnittest_Extensions_serviceopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_ServiceOptions>(
  _protobuf_fieldNumber: 15497145,
  fieldName: "protobuf_unittest.serviceopt"
)

let ProtobufUnittest_Extensions_methodopt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_MethodOptions>(
  _protobuf_fieldNumber: 15512713,
  fieldName: "protobuf_unittest.methodopt"
)

let ProtobufUnittest_Extensions_required_enum_opt = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_OldOptionType>, Google_Protobuf_MessageOptions>(
  _protobuf_fieldNumber: 106161807,
  fieldName: "protobuf_unittest.required_enum_opt"
)

extension ProtobufUnittest_ComplexOptionType2.ComplexOptionType4 {
  enum Extensions {
    static let complex_opt4 = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_ComplexOptionType2.ComplexOptionType4>, Google_Protobuf_MessageOptions>(
      _protobuf_fieldNumber: 7633546,
      fieldName: "protobuf_unittest.ComplexOptionType2.ComplexOptionType4.complex_opt4"
    )
  }
}

extension ProtobufUnittest_AggregateMessageSetElement {
  enum Extensions {
    static let message_set_extension = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_AggregateMessageSetElement>, ProtobufUnittest_AggregateMessageSet>(
      _protobuf_fieldNumber: 15447542,
      fieldName: "protobuf_unittest.AggregateMessageSetElement"
    )
  }
}

extension ProtobufUnittest_Aggregate {
  enum Extensions {
    static let nested = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalMessageExtensionField<ProtobufUnittest_Aggregate>, Google_Protobuf_FileOptions>(
      _protobuf_fieldNumber: 15476903,
      fieldName: "protobuf_unittest.Aggregate.nested"
    )
  }
}

extension ProtobufUnittest_NestedOptionType {
  enum Extensions {
    static let nested_extension = SwiftProtobuf.MessageExtension<SwiftProtobuf.OptionalExtensionField<SwiftProtobuf.ProtobufInt32>, Google_Protobuf_FileOptions>(
      _protobuf_fieldNumber: 7912573,
      fieldName: "protobuf_unittest.NestedOptionType.nested_extension"
    )
  }
}

// MARK: - Code below here is support for the SwiftProtobuf runtime.

fileprivate let _protobuf_package = "protobuf_unittest"

extension ProtobufUnittest_MethodOpt1: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "METHODOPT1_VAL1"),
    2: .same(proto: "METHODOPT1_VAL2"),
  ]
}

extension ProtobufUnittest_AggregateEnum: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "VALUE"),
  ]
}

extension ProtobufUnittest_TestMessageWithCustomOptions: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".TestMessageWithCustomOptions"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "field1"),
    2: .standard(proto: "oneof_field"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularStringField(value: &self._field1)
      case 2:
        if self.anOneof != nil {try decoder.handleConflictingOneOf()}
        var v: Int32?
        try decoder.decodeSingularInt32Field(value: &v)
        if let v = v {self.anOneof = .oneofField(v)}
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._field1 {
      try visitor.visitSingularStringField(value: v, fieldNumber: 1)
    }
    if case .oneofField(let v)? = self.anOneof {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 2)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_TestMessageWithCustomOptions, rhs: ProtobufUnittest_TestMessageWithCustomOptions) -> Bool {
    if lhs._field1 != rhs._field1 {return false}
    if lhs.anOneof != rhs.anOneof {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_TestMessageWithCustomOptions.AnEnum: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "ANENUM_VAL1"),
    2: .same(proto: "ANENUM_VAL2"),
  ]
}

extension ProtobufUnittest_CustomOptionFooRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionFooRequest"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionFooRequest, rhs: ProtobufUnittest_CustomOptionFooRequest) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionFooResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionFooResponse"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionFooResponse, rhs: ProtobufUnittest_CustomOptionFooResponse) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionFooClientMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionFooClientMessage"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionFooClientMessage, rhs: ProtobufUnittest_CustomOptionFooClientMessage) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionFooServerMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionFooServerMessage"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionFooServerMessage, rhs: ProtobufUnittest_CustomOptionFooServerMessage) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_DummyMessageContainingEnum: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".DummyMessageContainingEnum"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_DummyMessageContainingEnum, rhs: ProtobufUnittest_DummyMessageContainingEnum) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_DummyMessageContainingEnum.TestEnumType: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    -23: .same(proto: "TEST_OPTION_ENUM_TYPE2"),
    22: .same(proto: "TEST_OPTION_ENUM_TYPE1"),
  ]
}

extension ProtobufUnittest_DummyMessageInvalidAsOptionType: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".DummyMessageInvalidAsOptionType"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_DummyMessageInvalidAsOptionType, rhs: ProtobufUnittest_DummyMessageInvalidAsOptionType) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionMinIntegerValues: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionMinIntegerValues"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionMinIntegerValues, rhs: ProtobufUnittest_CustomOptionMinIntegerValues) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionMaxIntegerValues: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionMaxIntegerValues"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionMaxIntegerValues, rhs: ProtobufUnittest_CustomOptionMaxIntegerValues) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_CustomOptionOtherValues: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".CustomOptionOtherValues"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_CustomOptionOtherValues, rhs: ProtobufUnittest_CustomOptionOtherValues) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_SettingRealsFromPositiveInts: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".SettingRealsFromPositiveInts"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_SettingRealsFromPositiveInts, rhs: ProtobufUnittest_SettingRealsFromPositiveInts) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_SettingRealsFromNegativeInts: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".SettingRealsFromNegativeInts"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_SettingRealsFromNegativeInts, rhs: ProtobufUnittest_SettingRealsFromNegativeInts) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOptionType1: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".ComplexOptionType1"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "foo"),
    2: .same(proto: "foo2"),
    3: .same(proto: "foo3"),
    4: .same(proto: "foo4"),
  ]

  public var isInitialized: Bool {
    if !_protobuf_extensionFieldValues.isInitialized {return false}
    return true
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularInt32Field(value: &self._foo)
      case 2: try decoder.decodeSingularInt32Field(value: &self._foo2)
      case 3: try decoder.decodeSingularInt32Field(value: &self._foo3)
      case 4: try decoder.decodeRepeatedInt32Field(value: &self.foo4)
      case 100..<536870912:
        try decoder.decodeExtensionField(values: &_protobuf_extensionFieldValues, messageType: ProtobufUnittest_ComplexOptionType1.self, fieldNumber: fieldNumber)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._foo {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
    }
    if let v = self._foo2 {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 2)
    }
    if let v = self._foo3 {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 3)
    }
    if !self.foo4.isEmpty {
      try visitor.visitRepeatedInt32Field(value: self.foo4, fieldNumber: 4)
    }
    try visitor.visitExtensionFields(fields: _protobuf_extensionFieldValues, start: 100, end: 536870912)
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOptionType1, rhs: ProtobufUnittest_ComplexOptionType1) -> Bool {
    if lhs._foo != rhs._foo {return false}
    if lhs._foo2 != rhs._foo2 {return false}
    if lhs._foo3 != rhs._foo3 {return false}
    if lhs.foo4 != rhs.foo4 {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    if lhs._protobuf_extensionFieldValues != rhs._protobuf_extensionFieldValues {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOptionType2: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".ComplexOptionType2"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "bar"),
    2: .same(proto: "baz"),
    3: .same(proto: "fred"),
    4: .same(proto: "barney"),
  ]

  fileprivate class _StorageClass {
    var _bar: ProtobufUnittest_ComplexOptionType1? = nil
    var _baz: Int32? = nil
    var _fred: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4? = nil
    var _barney: [ProtobufUnittest_ComplexOptionType2.ComplexOptionType4] = []

    static let defaultInstance = _StorageClass()

    private init() {}

    init(copying source: _StorageClass) {
      _bar = source._bar
      _baz = source._baz
      _fred = source._fred
      _barney = source._barney
    }
  }

  fileprivate mutating func _uniqueStorage() -> _StorageClass {
    if !isKnownUniquelyReferenced(&_storage) {
      _storage = _StorageClass(copying: _storage)
    }
    return _storage
  }

  public var isInitialized: Bool {
    if !_protobuf_extensionFieldValues.isInitialized {return false}
    return withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      if let v = _storage._bar, !v.isInitialized {return false}
      return true
    }
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    _ = _uniqueStorage()
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      while let fieldNumber = try decoder.nextFieldNumber() {
        switch fieldNumber {
        case 1: try decoder.decodeSingularMessageField(value: &_storage._bar)
        case 2: try decoder.decodeSingularInt32Field(value: &_storage._baz)
        case 3: try decoder.decodeSingularMessageField(value: &_storage._fred)
        case 4: try decoder.decodeRepeatedMessageField(value: &_storage._barney)
        case 100..<536870912:
          try decoder.decodeExtensionField(values: &_protobuf_extensionFieldValues, messageType: ProtobufUnittest_ComplexOptionType2.self, fieldNumber: fieldNumber)
        default: break
        }
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      if let v = _storage._bar {
        try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
      }
      if let v = _storage._baz {
        try visitor.visitSingularInt32Field(value: v, fieldNumber: 2)
      }
      if let v = _storage._fred {
        try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
      }
      if !_storage._barney.isEmpty {
        try visitor.visitRepeatedMessageField(value: _storage._barney, fieldNumber: 4)
      }
      try visitor.visitExtensionFields(fields: _protobuf_extensionFieldValues, start: 100, end: 536870912)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOptionType2, rhs: ProtobufUnittest_ComplexOptionType2) -> Bool {
    if lhs._storage !== rhs._storage {
      let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in
        let _storage = _args.0
        let rhs_storage = _args.1
        if _storage._bar != rhs_storage._bar {return false}
        if _storage._baz != rhs_storage._baz {return false}
        if _storage._fred != rhs_storage._fred {return false}
        if _storage._barney != rhs_storage._barney {return false}
        return true
      }
      if !storagesAreEqual {return false}
    }
    if lhs.unknownFields != rhs.unknownFields {return false}
    if lhs._protobuf_extensionFieldValues != rhs._protobuf_extensionFieldValues {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOptionType2.ComplexOptionType4: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = ProtobufUnittest_ComplexOptionType2.protoMessageName + ".ComplexOptionType4"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "waldo"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularInt32Field(value: &self._waldo)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._waldo {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4, rhs: ProtobufUnittest_ComplexOptionType2.ComplexOptionType4) -> Bool {
    if lhs._waldo != rhs._waldo {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOptionType3: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".ComplexOptionType3"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "qux"),
    2: .unique(proto: "ComplexOptionType5", json: "complexoptiontype5"),
  ]

  fileprivate class _StorageClass {
    var _qux: Int32? = nil
    var _complexOptionType5: ProtobufUnittest_ComplexOptionType3.ComplexOptionType5? = nil

    static let defaultInstance = _StorageClass()

    private init() {}

    init(copying source: _StorageClass) {
      _qux = source._qux
      _complexOptionType5 = source._complexOptionType5
    }
  }

  fileprivate mutating func _uniqueStorage() -> _StorageClass {
    if !isKnownUniquelyReferenced(&_storage) {
      _storage = _StorageClass(copying: _storage)
    }
    return _storage
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    _ = _uniqueStorage()
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      while let fieldNumber = try decoder.nextFieldNumber() {
        switch fieldNumber {
        case 1: try decoder.decodeSingularInt32Field(value: &_storage._qux)
        case 2: try decoder.decodeSingularGroupField(value: &_storage._complexOptionType5)
        default: break
        }
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      if let v = _storage._qux {
        try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
      }
      if let v = _storage._complexOptionType5 {
        try visitor.visitSingularGroupField(value: v, fieldNumber: 2)
      }
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOptionType3, rhs: ProtobufUnittest_ComplexOptionType3) -> Bool {
    if lhs._storage !== rhs._storage {
      let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in
        let _storage = _args.0
        let rhs_storage = _args.1
        if _storage._qux != rhs_storage._qux {return false}
        if _storage._complexOptionType5 != rhs_storage._complexOptionType5 {return false}
        return true
      }
      if !storagesAreEqual {return false}
    }
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOptionType3.ComplexOptionType5: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = ProtobufUnittest_ComplexOptionType3.protoMessageName + ".ComplexOptionType5"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    3: .same(proto: "plugh"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 3: try decoder.decodeSingularInt32Field(value: &self._plugh)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._plugh {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 3)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOptionType3.ComplexOptionType5, rhs: ProtobufUnittest_ComplexOptionType3.ComplexOptionType5) -> Bool {
    if lhs._plugh != rhs._plugh {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_ComplexOpt6: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".ComplexOpt6"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    7593951: .same(proto: "xyzzy"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 7593951: try decoder.decodeSingularInt32Field(value: &self._xyzzy)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._xyzzy {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 7593951)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_ComplexOpt6, rhs: ProtobufUnittest_ComplexOpt6) -> Bool {
    if lhs._xyzzy != rhs._xyzzy {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_VariousComplexOptions: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".VariousComplexOptions"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_VariousComplexOptions, rhs: ProtobufUnittest_VariousComplexOptions) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_AggregateMessageSet: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".AggregateMessageSet"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  public var isInitialized: Bool {
    if !_protobuf_extensionFieldValues.isInitialized {return false}
    return true
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    try decoder.decodeExtensionFieldsAsMessageSet(values: &_protobuf_extensionFieldValues, messageType: ProtobufUnittest_AggregateMessageSet.self)
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try visitor.visitExtensionFieldsAsMessageSet(fields: _protobuf_extensionFieldValues, start: 4, end: 2147483647)
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_AggregateMessageSet, rhs: ProtobufUnittest_AggregateMessageSet) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    if lhs._protobuf_extensionFieldValues != rhs._protobuf_extensionFieldValues {return false}
    return true
  }
}

extension ProtobufUnittest_AggregateMessageSetElement: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".AggregateMessageSetElement"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "s"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularStringField(value: &self._s)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._s {
      try visitor.visitSingularStringField(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_AggregateMessageSetElement, rhs: ProtobufUnittest_AggregateMessageSetElement) -> Bool {
    if lhs._s != rhs._s {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_Aggregate: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".Aggregate"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "i"),
    2: .same(proto: "s"),
    3: .same(proto: "sub"),
    4: .same(proto: "file"),
    5: .same(proto: "mset"),
  ]

  fileprivate class _StorageClass {
    var _i: Int32? = nil
    var _s: String? = nil
    var _sub: ProtobufUnittest_Aggregate? = nil
    var _file: Google_Protobuf_FileOptions? = nil
    var _mset: ProtobufUnittest_AggregateMessageSet? = nil

    static let defaultInstance = _StorageClass()

    private init() {}

    init(copying source: _StorageClass) {
      _i = source._i
      _s = source._s
      _sub = source._sub
      _file = source._file
      _mset = source._mset
    }
  }

  fileprivate mutating func _uniqueStorage() -> _StorageClass {
    if !isKnownUniquelyReferenced(&_storage) {
      _storage = _StorageClass(copying: _storage)
    }
    return _storage
  }

  public var isInitialized: Bool {
    return withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      if let v = _storage._sub, !v.isInitialized {return false}
      if let v = _storage._file, !v.isInitialized {return false}
      if let v = _storage._mset, !v.isInitialized {return false}
      return true
    }
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    _ = _uniqueStorage()
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      while let fieldNumber = try decoder.nextFieldNumber() {
        switch fieldNumber {
        case 1: try decoder.decodeSingularInt32Field(value: &_storage._i)
        case 2: try decoder.decodeSingularStringField(value: &_storage._s)
        case 3: try decoder.decodeSingularMessageField(value: &_storage._sub)
        case 4: try decoder.decodeSingularMessageField(value: &_storage._file)
        case 5: try decoder.decodeSingularMessageField(value: &_storage._mset)
        default: break
        }
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
      if let v = _storage._i {
        try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
      }
      if let v = _storage._s {
        try visitor.visitSingularStringField(value: v, fieldNumber: 2)
      }
      if let v = _storage._sub {
        try visitor.visitSingularMessageField(value: v, fieldNumber: 3)
      }
      if let v = _storage._file {
        try visitor.visitSingularMessageField(value: v, fieldNumber: 4)
      }
      if let v = _storage._mset {
        try visitor.visitSingularMessageField(value: v, fieldNumber: 5)
      }
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_Aggregate, rhs: ProtobufUnittest_Aggregate) -> Bool {
    if lhs._storage !== rhs._storage {
      let storagesAreEqual: Bool = withExtendedLifetime((lhs._storage, rhs._storage)) { (_args: (_StorageClass, _StorageClass)) in
        let _storage = _args.0
        let rhs_storage = _args.1
        if _storage._i != rhs_storage._i {return false}
        if _storage._s != rhs_storage._s {return false}
        if _storage._sub != rhs_storage._sub {return false}
        if _storage._file != rhs_storage._file {return false}
        if _storage._mset != rhs_storage._mset {return false}
        return true
      }
      if !storagesAreEqual {return false}
    }
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_AggregateMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".AggregateMessage"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "fieldname"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularInt32Field(value: &self._fieldname)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._fieldname {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_AggregateMessage, rhs: ProtobufUnittest_AggregateMessage) -> Bool {
    if lhs._fieldname != rhs._fieldname {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_NestedOptionType: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".NestedOptionType"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_NestedOptionType, rhs: ProtobufUnittest_NestedOptionType) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_NestedOptionType.NestedEnum: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "NESTED_ENUM_VALUE"),
  ]
}

extension ProtobufUnittest_NestedOptionType.NestedMessage: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = ProtobufUnittest_NestedOptionType.protoMessageName + ".NestedMessage"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .standard(proto: "nested_field"),
  ]

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularInt32Field(value: &self._nestedField)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._nestedField {
      try visitor.visitSingularInt32Field(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_NestedOptionType.NestedMessage, rhs: ProtobufUnittest_NestedOptionType.NestedMessage) -> Bool {
    if lhs._nestedField != rhs._nestedField {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_OldOptionType: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".OldOptionType"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "value"),
  ]

  public var isInitialized: Bool {
    if self._value == nil {return false}
    return true
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularEnumField(value: &self._value)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._value {
      try visitor.visitSingularEnumField(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_OldOptionType, rhs: ProtobufUnittest_OldOptionType) -> Bool {
    if lhs._value != rhs._value {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_OldOptionType.TestEnum: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    0: .same(proto: "OLD_VALUE"),
  ]
}

extension ProtobufUnittest_NewOptionType: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".NewOptionType"
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    1: .same(proto: "value"),
  ]

  public var isInitialized: Bool {
    if self._value == nil {return false}
    return true
  }

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let fieldNumber = try decoder.nextFieldNumber() {
      switch fieldNumber {
      case 1: try decoder.decodeSingularEnumField(value: &self._value)
      default: break
      }
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    if let v = self._value {
      try visitor.visitSingularEnumField(value: v, fieldNumber: 1)
    }
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_NewOptionType, rhs: ProtobufUnittest_NewOptionType) -> Bool {
    if lhs._value != rhs._value {return false}
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}

extension ProtobufUnittest_NewOptionType.TestEnum: SwiftProtobuf._ProtoNameProviding {
  static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
    0: .same(proto: "OLD_VALUE"),
    1: .same(proto: "NEW_VALUE"),
  ]
}

extension ProtobufUnittest_TestMessageWithRequiredEnumOption: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
  static let protoMessageName: String = _protobuf_package + ".TestMessageWithRequiredEnumOption"
  static let _protobuf_nameMap = SwiftProtobuf._NameMap()

  mutating func decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
    while let _ = try decoder.nextFieldNumber() {
    }
  }

  func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
    try unknownFields.traverse(visitor: &visitor)
  }

  static func ==(lhs: ProtobufUnittest_TestMessageWithRequiredEnumOption, rhs: ProtobufUnittest_TestMessageWithRequiredEnumOption) -> Bool {
    if lhs.unknownFields != rhs.unknownFields {return false}
    return true
  }
}
