text: // DO NOT EDIT.
  //
  // Generated by the Swift generator plugin for the protocol buffer compiler.
  // Source: google/protobuf/unittest_lite_imports_nonlite.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: kenton@google.com (Kenton Varda)
  //
  // Tests that a "lite" message can import a regular message.
  
  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
  }
  
  struct ProtobufUnittest_TestLiteImportsNonlite {
    // 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 message: ProtobufUnittest_TestAllTypes {
      get {return _storage._message ?? ProtobufUnittest_TestAllTypes()}
      set {_uniqueStorage()._message = newValue}
    }
    /// Returns true if `message` has been explicitly set.
    var hasMessage: Bool {return _storage._message != nil}
    /// Clears the value of `message`. Subsequent reads from it will return its default value.
    mutating func clearMessage() {_uniqueStorage()._message = nil}
  
    /// Verifies that transitive required fields generates valid code.
    var messageWithRequired: ProtobufUnittest_TestRequired {
      get {return _storage._messageWithRequired ?? ProtobufUnittest_TestRequired()}
      set {_uniqueStorage()._messageWithRequired = newValue}
    }
    /// Returns true if `messageWithRequired` has been explicitly set.
    var hasMessageWithRequired: Bool {return _storage._messageWithRequired != nil}
    /// Clears the value of `messageWithRequired`. Subsequent reads from it will return its default value.
    mutating func clearMessageWithRequired() {_uniqueStorage()._messageWithRequired = nil}
  
    var unknownFields = SwiftProtobuf.UnknownStorage()
  
    init() {}
  
    fileprivate var _storage = _StorageClass.defaultInstance
  }
  
  // MARK: - Code below here is support for the SwiftProtobuf runtime.
  
  fileprivate let _protobuf_package = "protobuf_unittest"
  
  extension ProtobufUnittest_TestLiteImportsNonlite: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding {
    static let protoMessageName: String = _protobuf_package + ".TestLiteImportsNonlite"
    static let _protobuf_nameMap: SwiftProtobuf._NameMap = [
      1: .same(proto: "message"),
      2: .standard(proto: "message_with_required"),
    ]
  
    fileprivate class _StorageClass {
      var _message: ProtobufUnittest_TestAllTypes? = nil
      var _messageWithRequired: ProtobufUnittest_TestRequired? = nil
  
      static let defaultInstance = _StorageClass()
  
      private init() {}
  
      init(copying source: _StorageClass) {
        _message = source._message
        _messageWithRequired = source._messageWithRequired
      }
    }
  
    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._messageWithRequired, !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._message)
          case 2: try decoder.decodeSingularMessageField(value: &_storage._messageWithRequired)
          default: break
          }
        }
      }
    }
  
    func traverse<V: SwiftProtobuf.Visitor>(visitor: inout V) throws {
      try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
        if let v = _storage._message {
          try visitor.visitSingularMessageField(value: v, fieldNumber: 1)
        }
        if let v = _storage._messageWithRequired {
          try visitor.visitSingularMessageField(value: v, fieldNumber: 2)
        }
      }
      try unknownFields.traverse(visitor: &visitor)
    }
  
    static func ==(lhs: ProtobufUnittest_TestLiteImportsNonlite, rhs: ProtobufUnittest_TestLiteImportsNonlite) -> 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._message != rhs_storage._message {return false}
          if _storage._messageWithRequired != rhs_storage._messageWithRequired {return false}
          return true
        }
        if !storagesAreEqual {return false}
      }
      if lhs.unknownFields != rhs.unknownFields {return false}
      return true
    }
  }
  