/// Generated by the Protocol Buffers 3.6.0 compiler.  DO NOT EDIT!
/// Protobuf-swift version: 4.0.0
/// Source file "unittest_well_known_types.proto"
/// Syntax "Proto3"

import Foundation
import ProtocolBuffers


public extension ProtobufUnittest{}

public extension ProtobufUnittest {
    public struct UnittestWellKnownTypesRoot {
        public static let `default` = UnittestWellKnownTypesRoot()
        public var extensionRegistry:ExtensionRegistry

        init() {
            extensionRegistry = ExtensionRegistry()
            registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.AnyRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.ApiRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.DurationRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.EmptyRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.FieldMaskRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.SourceContextRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.StructRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.TimestampRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.TypeRoot.default.registerAllExtensions(registry: extensionRegistry)
            Google.Protobuf.WrappersRoot.default.registerAllExtensions(registry: extensionRegistry)
        }
        public func registerAllExtensions(registry: ExtensionRegistry) {
        }
    }

    /// Test that we can include all well-known types.
    final public class TestWellKnownTypes : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestWellKnownTypes.Builder

        public static func == (lhs: ProtobufUnittest.TestWellKnownTypes, rhs: ProtobufUnittest.TestWellKnownTypes) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasAnyField == rhs.hasAnyField) && (!lhs.hasAnyField || lhs.anyField == rhs.anyField)
            fieldCheck = fieldCheck && (lhs.hasApiField == rhs.hasApiField) && (!lhs.hasApiField || lhs.apiField == rhs.apiField)
            fieldCheck = fieldCheck && (lhs.hasDurationField == rhs.hasDurationField) && (!lhs.hasDurationField || lhs.durationField == rhs.durationField)
            fieldCheck = fieldCheck && (lhs.hasEmptyField == rhs.hasEmptyField) && (!lhs.hasEmptyField || lhs.emptyField == rhs.emptyField)
            fieldCheck = fieldCheck && (lhs.hasFieldMaskField == rhs.hasFieldMaskField) && (!lhs.hasFieldMaskField || lhs.fieldMaskField == rhs.fieldMaskField)
            fieldCheck = fieldCheck && (lhs.hasSourceContextField == rhs.hasSourceContextField) && (!lhs.hasSourceContextField || lhs.sourceContextField == rhs.sourceContextField)
            fieldCheck = fieldCheck && (lhs.hasStructField == rhs.hasStructField) && (!lhs.hasStructField || lhs.structField == rhs.structField)
            fieldCheck = fieldCheck && (lhs.hasTimestampField == rhs.hasTimestampField) && (!lhs.hasTimestampField || lhs.timestampField == rhs.timestampField)
            fieldCheck = fieldCheck && (lhs.hasTypeField == rhs.hasTypeField) && (!lhs.hasTypeField || lhs.typeField == rhs.typeField)
            fieldCheck = fieldCheck && (lhs.hasInt32Field == rhs.hasInt32Field) && (!lhs.hasInt32Field || lhs.int32Field == rhs.int32Field)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public fileprivate(set) var anyField:Google.Protobuf.`Any`!
        public fileprivate(set) var hasAnyField:Bool = false
        public fileprivate(set) var apiField:Google.Protobuf.Api!
        public fileprivate(set) var hasApiField:Bool = false
        public fileprivate(set) var durationField:Google.Protobuf.Duration!
        public fileprivate(set) var hasDurationField:Bool = false
        public fileprivate(set) var emptyField:Google.Protobuf.Empty!
        public fileprivate(set) var hasEmptyField:Bool = false
        public fileprivate(set) var fieldMaskField:Google.Protobuf.FieldMask!
        public fileprivate(set) var hasFieldMaskField:Bool = false
        public fileprivate(set) var sourceContextField:Google.Protobuf.SourceContext!
        public fileprivate(set) var hasSourceContextField:Bool = false
        public fileprivate(set) var structField:Google.Protobuf.Struct!
        public fileprivate(set) var hasStructField:Bool = false
        public fileprivate(set) var timestampField:Google.Protobuf.Timestamp!
        public fileprivate(set) var hasTimestampField:Bool = false
        public fileprivate(set) var typeField:Google.Protobuf.ProtoType!
        public fileprivate(set) var hasTypeField:Bool = false
        public fileprivate(set) var int32Field:Google.Protobuf.Int32Value!
        public fileprivate(set) var hasInt32Field:Bool = false
        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasAnyField {
                try codedOutputStream.writeMessage(fieldNumber: 1, value:anyField)
            }
            if hasApiField {
                try codedOutputStream.writeMessage(fieldNumber: 2, value:apiField)
            }
            if hasDurationField {
                try codedOutputStream.writeMessage(fieldNumber: 3, value:durationField)
            }
            if hasEmptyField {
                try codedOutputStream.writeMessage(fieldNumber: 4, value:emptyField)
            }
            if hasFieldMaskField {
                try codedOutputStream.writeMessage(fieldNumber: 5, value:fieldMaskField)
            }
            if hasSourceContextField {
                try codedOutputStream.writeMessage(fieldNumber: 6, value:sourceContextField)
            }
            if hasStructField {
                try codedOutputStream.writeMessage(fieldNumber: 7, value:structField)
            }
            if hasTimestampField {
                try codedOutputStream.writeMessage(fieldNumber: 8, value:timestampField)
            }
            if hasTypeField {
                try codedOutputStream.writeMessage(fieldNumber: 9, value:typeField)
            }
            if hasInt32Field {
                try codedOutputStream.writeMessage(fieldNumber: 10, value:int32Field)
            }
            try unknownFields.writeTo(codedOutputStream: codedOutputStream)
        }
        override public func serializedSize() -> Int32 {
            var serialize_size:Int32 = memoizedSerializedSize
            if serialize_size != -1 {
             return serialize_size
            }

            serialize_size = 0
            if hasAnyField {
                if let varSizeanyField = anyField?.computeMessageSize(fieldNumber: 1) {
                    serialize_size += varSizeanyField
                }
            }
            if hasApiField {
                if let varSizeapiField = apiField?.computeMessageSize(fieldNumber: 2) {
                    serialize_size += varSizeapiField
                }
            }
            if hasDurationField {
                if let varSizedurationField = durationField?.computeMessageSize(fieldNumber: 3) {
                    serialize_size += varSizedurationField
                }
            }
            if hasEmptyField {
                if let varSizeemptyField = emptyField?.computeMessageSize(fieldNumber: 4) {
                    serialize_size += varSizeemptyField
                }
            }
            if hasFieldMaskField {
                if let varSizefieldMaskField = fieldMaskField?.computeMessageSize(fieldNumber: 5) {
                    serialize_size += varSizefieldMaskField
                }
            }
            if hasSourceContextField {
                if let varSizesourceContextField = sourceContextField?.computeMessageSize(fieldNumber: 6) {
                    serialize_size += varSizesourceContextField
                }
            }
            if hasStructField {
                if let varSizestructField = structField?.computeMessageSize(fieldNumber: 7) {
                    serialize_size += varSizestructField
                }
            }
            if hasTimestampField {
                if let varSizetimestampField = timestampField?.computeMessageSize(fieldNumber: 8) {
                    serialize_size += varSizetimestampField
                }
            }
            if hasTypeField {
                if let varSizetypeField = typeField?.computeMessageSize(fieldNumber: 9) {
                    serialize_size += varSizetypeField
                }
            }
            if hasInt32Field {
                if let varSizeint32Field = int32Field?.computeMessageSize(fieldNumber: 10) {
                    serialize_size += varSizeint32Field
                }
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestWellKnownTypes.Builder {
            return ProtobufUnittest.TestWellKnownTypes.classBuilder() as! ProtobufUnittest.TestWellKnownTypes.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestWellKnownTypes.Builder {
            return classBuilder() as! ProtobufUnittest.TestWellKnownTypes.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestWellKnownTypes.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestWellKnownTypes.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
            return try ProtobufUnittest.TestWellKnownTypes.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestWellKnownTypes) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
            return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasAnyField {
                jsonMap["anyField"] = try anyField.encode()
            }
            if hasApiField {
                jsonMap["apiField"] = try apiField.encode()
            }
            if hasDurationField {
                jsonMap["durationField"] = try durationField.encode()
            }
            if hasEmptyField {
                jsonMap["emptyField"] = try emptyField.encode()
            }
            if hasFieldMaskField {
                jsonMap["fieldMaskField"] = try fieldMaskField.encode()
            }
            if hasSourceContextField {
                jsonMap["sourceContextField"] = try sourceContextField.encode()
            }
            if hasStructField {
                jsonMap["structField"] = try structField.encode()
            }
            if hasTimestampField {
                jsonMap["timestampField"] = try timestampField.encode()
            }
            if hasTypeField {
                jsonMap["typeField"] = try typeField.encode()
            }
            if hasInt32Field {
                jsonMap["int32Field"] = try int32Field.encode()
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestWellKnownTypes {
            return try ProtobufUnittest.TestWellKnownTypes.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestWellKnownTypes {
            return try ProtobufUnittest.TestWellKnownTypes.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasAnyField {
                output += "\(indent) anyField {\n"
                if let outDescAnyField = anyField {
                    output += try outDescAnyField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasApiField {
                output += "\(indent) apiField {\n"
                if let outDescApiField = apiField {
                    output += try outDescApiField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasDurationField {
                output += "\(indent) durationField {\n"
                if let outDescDurationField = durationField {
                    output += try outDescDurationField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasEmptyField {
                output += "\(indent) emptyField {\n"
                if let outDescEmptyField = emptyField {
                    output += try outDescEmptyField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasFieldMaskField {
                output += "\(indent) fieldMaskField {\n"
                if let outDescFieldMaskField = fieldMaskField {
                    output += try outDescFieldMaskField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasSourceContextField {
                output += "\(indent) sourceContextField {\n"
                if let outDescSourceContextField = sourceContextField {
                    output += try outDescSourceContextField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasStructField {
                output += "\(indent) structField {\n"
                if let outDescStructField = structField {
                    output += try outDescStructField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasTimestampField {
                output += "\(indent) timestampField {\n"
                if let outDescTimestampField = timestampField {
                    output += try outDescTimestampField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasTypeField {
                output += "\(indent) typeField {\n"
                if let outDescTypeField = typeField {
                    output += try outDescTypeField.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasInt32Field {
                output += "\(indent) int32Field {\n"
                if let outDescInt32Field = int32Field {
                    output += try outDescInt32Field.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasAnyField {
                    if let hashValueanyField = anyField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueanyField
                    }
                }
                if hasApiField {
                    if let hashValueapiField = apiField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueapiField
                    }
                }
                if hasDurationField {
                    if let hashValuedurationField = durationField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuedurationField
                    }
                }
                if hasEmptyField {
                    if let hashValueemptyField = emptyField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueemptyField
                    }
                }
                if hasFieldMaskField {
                    if let hashValuefieldMaskField = fieldMaskField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuefieldMaskField
                    }
                }
                if hasSourceContextField {
                    if let hashValuesourceContextField = sourceContextField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuesourceContextField
                    }
                }
                if hasStructField {
                    if let hashValuestructField = structField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuestructField
                    }
                }
                if hasTimestampField {
                    if let hashValuetimestampField = timestampField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuetimestampField
                    }
                }
                if hasTypeField {
                    if let hashValuetypeField = typeField?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuetypeField
                    }
                }
                if hasInt32Field {
                    if let hashValueint32Field = int32Field?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueint32Field
                    }
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

        override public class func className() -> String {
            return "ProtobufUnittest.TestWellKnownTypes"
        }
        override public func className() -> String {
            return "ProtobufUnittest.TestWellKnownTypes"
        }
        //Meta information declaration end

        final public class Builder : GeneratedMessageBuilder {
            fileprivate var builderResult:ProtobufUnittest.TestWellKnownTypes = ProtobufUnittest.TestWellKnownTypes()
            public func getMessage() -> ProtobufUnittest.TestWellKnownTypes {
                return builderResult
            }

            required override public init () {
                super.init()
            }
            public var anyField:Google.Protobuf.`Any`! {
                get {
                    if anyFieldBuilder_ != nil {
                        builderResult.anyField = anyFieldBuilder_.getMessage()
                    }
                    return builderResult.anyField
                }
                set (value) {
                    builderResult.hasAnyField = value != nil
                    builderResult.anyField = value
                }
            }
            public var hasAnyField:Bool {
                get {
                    return builderResult.hasAnyField
                }
            }
            fileprivate var anyFieldBuilder_:Google.Protobuf.`Any`.Builder! {
                didSet {
                    builderResult.hasAnyField = true
                }
            }
            public func getAnyFieldBuilder() -> Google.Protobuf.`Any`.Builder {
                if anyFieldBuilder_ == nil {
                    anyFieldBuilder_ = Google.Protobuf.`Any`.Builder()
                    builderResult.anyField = anyFieldBuilder_.getMessage()
                    if anyField != nil {
                        try! anyFieldBuilder_.mergeFrom(other: anyField)
                    }
                }
                return anyFieldBuilder_
            }
            @discardableResult
            public func setAnyField(_ value:Google.Protobuf.`Any`!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.anyField = value
                return self
            }
            @discardableResult
            public func mergeAnyField(value:Google.Protobuf.`Any`) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasAnyField {
                    builderResult.anyField = try Google.Protobuf.`Any`.builderWithPrototype(prototype:builderResult.anyField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.anyField = value
                }
                builderResult.hasAnyField = true
                return self
            }
            @discardableResult
            public func clearAnyField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                anyFieldBuilder_ = nil
                builderResult.hasAnyField = false
                builderResult.anyField = nil
                return self
            }
            public var apiField:Google.Protobuf.Api! {
                get {
                    if apiFieldBuilder_ != nil {
                        builderResult.apiField = apiFieldBuilder_.getMessage()
                    }
                    return builderResult.apiField
                }
                set (value) {
                    builderResult.hasApiField = value != nil
                    builderResult.apiField = value
                }
            }
            public var hasApiField:Bool {
                get {
                    return builderResult.hasApiField
                }
            }
            fileprivate var apiFieldBuilder_:Google.Protobuf.Api.Builder! {
                didSet {
                    builderResult.hasApiField = true
                }
            }
            public func getApiFieldBuilder() -> Google.Protobuf.Api.Builder {
                if apiFieldBuilder_ == nil {
                    apiFieldBuilder_ = Google.Protobuf.Api.Builder()
                    builderResult.apiField = apiFieldBuilder_.getMessage()
                    if apiField != nil {
                        try! apiFieldBuilder_.mergeFrom(other: apiField)
                    }
                }
                return apiFieldBuilder_
            }
            @discardableResult
            public func setApiField(_ value:Google.Protobuf.Api!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.apiField = value
                return self
            }
            @discardableResult
            public func mergeApiField(value:Google.Protobuf.Api) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasApiField {
                    builderResult.apiField = try Google.Protobuf.Api.builderWithPrototype(prototype:builderResult.apiField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.apiField = value
                }
                builderResult.hasApiField = true
                return self
            }
            @discardableResult
            public func clearApiField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                apiFieldBuilder_ = nil
                builderResult.hasApiField = false
                builderResult.apiField = nil
                return self
            }
            public var durationField:Google.Protobuf.Duration! {
                get {
                    if durationFieldBuilder_ != nil {
                        builderResult.durationField = durationFieldBuilder_.getMessage()
                    }
                    return builderResult.durationField
                }
                set (value) {
                    builderResult.hasDurationField = value != nil
                    builderResult.durationField = value
                }
            }
            public var hasDurationField:Bool {
                get {
                    return builderResult.hasDurationField
                }
            }
            fileprivate var durationFieldBuilder_:Google.Protobuf.Duration.Builder! {
                didSet {
                    builderResult.hasDurationField = true
                }
            }
            public func getDurationFieldBuilder() -> Google.Protobuf.Duration.Builder {
                if durationFieldBuilder_ == nil {
                    durationFieldBuilder_ = Google.Protobuf.Duration.Builder()
                    builderResult.durationField = durationFieldBuilder_.getMessage()
                    if durationField != nil {
                        try! durationFieldBuilder_.mergeFrom(other: durationField)
                    }
                }
                return durationFieldBuilder_
            }
            @discardableResult
            public func setDurationField(_ value:Google.Protobuf.Duration!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.durationField = value
                return self
            }
            @discardableResult
            public func mergeDurationField(value:Google.Protobuf.Duration) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasDurationField {
                    builderResult.durationField = try Google.Protobuf.Duration.builderWithPrototype(prototype:builderResult.durationField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.durationField = value
                }
                builderResult.hasDurationField = true
                return self
            }
            @discardableResult
            public func clearDurationField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                durationFieldBuilder_ = nil
                builderResult.hasDurationField = false
                builderResult.durationField = nil
                return self
            }
            public var emptyField:Google.Protobuf.Empty! {
                get {
                    if emptyFieldBuilder_ != nil {
                        builderResult.emptyField = emptyFieldBuilder_.getMessage()
                    }
                    return builderResult.emptyField
                }
                set (value) {
                    builderResult.hasEmptyField = value != nil
                    builderResult.emptyField = value
                }
            }
            public var hasEmptyField:Bool {
                get {
                    return builderResult.hasEmptyField
                }
            }
            fileprivate var emptyFieldBuilder_:Google.Protobuf.Empty.Builder! {
                didSet {
                    builderResult.hasEmptyField = true
                }
            }
            public func getEmptyFieldBuilder() -> Google.Protobuf.Empty.Builder {
                if emptyFieldBuilder_ == nil {
                    emptyFieldBuilder_ = Google.Protobuf.Empty.Builder()
                    builderResult.emptyField = emptyFieldBuilder_.getMessage()
                    if emptyField != nil {
                        try! emptyFieldBuilder_.mergeFrom(other: emptyField)
                    }
                }
                return emptyFieldBuilder_
            }
            @discardableResult
            public func setEmptyField(_ value:Google.Protobuf.Empty!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.emptyField = value
                return self
            }
            @discardableResult
            public func mergeEmptyField(value:Google.Protobuf.Empty) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasEmptyField {
                    builderResult.emptyField = try Google.Protobuf.Empty.builderWithPrototype(prototype:builderResult.emptyField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.emptyField = value
                }
                builderResult.hasEmptyField = true
                return self
            }
            @discardableResult
            public func clearEmptyField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                emptyFieldBuilder_ = nil
                builderResult.hasEmptyField = false
                builderResult.emptyField = nil
                return self
            }
            public var fieldMaskField:Google.Protobuf.FieldMask! {
                get {
                    if fieldMaskFieldBuilder_ != nil {
                        builderResult.fieldMaskField = fieldMaskFieldBuilder_.getMessage()
                    }
                    return builderResult.fieldMaskField
                }
                set (value) {
                    builderResult.hasFieldMaskField = value != nil
                    builderResult.fieldMaskField = value
                }
            }
            public var hasFieldMaskField:Bool {
                get {
                    return builderResult.hasFieldMaskField
                }
            }
            fileprivate var fieldMaskFieldBuilder_:Google.Protobuf.FieldMask.Builder! {
                didSet {
                    builderResult.hasFieldMaskField = true
                }
            }
            public func getFieldMaskFieldBuilder() -> Google.Protobuf.FieldMask.Builder {
                if fieldMaskFieldBuilder_ == nil {
                    fieldMaskFieldBuilder_ = Google.Protobuf.FieldMask.Builder()
                    builderResult.fieldMaskField = fieldMaskFieldBuilder_.getMessage()
                    if fieldMaskField != nil {
                        try! fieldMaskFieldBuilder_.mergeFrom(other: fieldMaskField)
                    }
                }
                return fieldMaskFieldBuilder_
            }
            @discardableResult
            public func setFieldMaskField(_ value:Google.Protobuf.FieldMask!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.fieldMaskField = value
                return self
            }
            @discardableResult
            public func mergeFieldMaskField(value:Google.Protobuf.FieldMask) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasFieldMaskField {
                    builderResult.fieldMaskField = try Google.Protobuf.FieldMask.builderWithPrototype(prototype:builderResult.fieldMaskField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.fieldMaskField = value
                }
                builderResult.hasFieldMaskField = true
                return self
            }
            @discardableResult
            public func clearFieldMaskField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                fieldMaskFieldBuilder_ = nil
                builderResult.hasFieldMaskField = false
                builderResult.fieldMaskField = nil
                return self
            }
            public var sourceContextField:Google.Protobuf.SourceContext! {
                get {
                    if sourceContextFieldBuilder_ != nil {
                        builderResult.sourceContextField = sourceContextFieldBuilder_.getMessage()
                    }
                    return builderResult.sourceContextField
                }
                set (value) {
                    builderResult.hasSourceContextField = value != nil
                    builderResult.sourceContextField = value
                }
            }
            public var hasSourceContextField:Bool {
                get {
                    return builderResult.hasSourceContextField
                }
            }
            fileprivate var sourceContextFieldBuilder_:Google.Protobuf.SourceContext.Builder! {
                didSet {
                    builderResult.hasSourceContextField = true
                }
            }
            public func getSourceContextFieldBuilder() -> Google.Protobuf.SourceContext.Builder {
                if sourceContextFieldBuilder_ == nil {
                    sourceContextFieldBuilder_ = Google.Protobuf.SourceContext.Builder()
                    builderResult.sourceContextField = sourceContextFieldBuilder_.getMessage()
                    if sourceContextField != nil {
                        try! sourceContextFieldBuilder_.mergeFrom(other: sourceContextField)
                    }
                }
                return sourceContextFieldBuilder_
            }
            @discardableResult
            public func setSourceContextField(_ value:Google.Protobuf.SourceContext!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.sourceContextField = value
                return self
            }
            @discardableResult
            public func mergeSourceContextField(value:Google.Protobuf.SourceContext) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasSourceContextField {
                    builderResult.sourceContextField = try Google.Protobuf.SourceContext.builderWithPrototype(prototype:builderResult.sourceContextField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.sourceContextField = value
                }
                builderResult.hasSourceContextField = true
                return self
            }
            @discardableResult
            public func clearSourceContextField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                sourceContextFieldBuilder_ = nil
                builderResult.hasSourceContextField = false
                builderResult.sourceContextField = nil
                return self
            }
            public var structField:Google.Protobuf.Struct! {
                get {
                    if structFieldBuilder_ != nil {
                        builderResult.structField = structFieldBuilder_.getMessage()
                    }
                    return builderResult.structField
                }
                set (value) {
                    builderResult.hasStructField = value != nil
                    builderResult.structField = value
                }
            }
            public var hasStructField:Bool {
                get {
                    return builderResult.hasStructField
                }
            }
            fileprivate var structFieldBuilder_:Google.Protobuf.Struct.Builder! {
                didSet {
                    builderResult.hasStructField = true
                }
            }
            public func getStructFieldBuilder() -> Google.Protobuf.Struct.Builder {
                if structFieldBuilder_ == nil {
                    structFieldBuilder_ = Google.Protobuf.Struct.Builder()
                    builderResult.structField = structFieldBuilder_.getMessage()
                    if structField != nil {
                        try! structFieldBuilder_.mergeFrom(other: structField)
                    }
                }
                return structFieldBuilder_
            }
            @discardableResult
            public func setStructField(_ value:Google.Protobuf.Struct!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.structField = value
                return self
            }
            @discardableResult
            public func mergeStructField(value:Google.Protobuf.Struct) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasStructField {
                    builderResult.structField = try Google.Protobuf.Struct.builderWithPrototype(prototype:builderResult.structField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.structField = value
                }
                builderResult.hasStructField = true
                return self
            }
            @discardableResult
            public func clearStructField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                structFieldBuilder_ = nil
                builderResult.hasStructField = false
                builderResult.structField = nil
                return self
            }
            public var timestampField:Google.Protobuf.Timestamp! {
                get {
                    if timestampFieldBuilder_ != nil {
                        builderResult.timestampField = timestampFieldBuilder_.getMessage()
                    }
                    return builderResult.timestampField
                }
                set (value) {
                    builderResult.hasTimestampField = value != nil
                    builderResult.timestampField = value
                }
            }
            public var hasTimestampField:Bool {
                get {
                    return builderResult.hasTimestampField
                }
            }
            fileprivate var timestampFieldBuilder_:Google.Protobuf.Timestamp.Builder! {
                didSet {
                    builderResult.hasTimestampField = true
                }
            }
            public func getTimestampFieldBuilder() -> Google.Protobuf.Timestamp.Builder {
                if timestampFieldBuilder_ == nil {
                    timestampFieldBuilder_ = Google.Protobuf.Timestamp.Builder()
                    builderResult.timestampField = timestampFieldBuilder_.getMessage()
                    if timestampField != nil {
                        try! timestampFieldBuilder_.mergeFrom(other: timestampField)
                    }
                }
                return timestampFieldBuilder_
            }
            @discardableResult
            public func setTimestampField(_ value:Google.Protobuf.Timestamp!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.timestampField = value
                return self
            }
            @discardableResult
            public func mergeTimestampField(value:Google.Protobuf.Timestamp) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasTimestampField {
                    builderResult.timestampField = try Google.Protobuf.Timestamp.builderWithPrototype(prototype:builderResult.timestampField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.timestampField = value
                }
                builderResult.hasTimestampField = true
                return self
            }
            @discardableResult
            public func clearTimestampField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                timestampFieldBuilder_ = nil
                builderResult.hasTimestampField = false
                builderResult.timestampField = nil
                return self
            }
            public var typeField:Google.Protobuf.ProtoType! {
                get {
                    if typeFieldBuilder_ != nil {
                        builderResult.typeField = typeFieldBuilder_.getMessage()
                    }
                    return builderResult.typeField
                }
                set (value) {
                    builderResult.hasTypeField = value != nil
                    builderResult.typeField = value
                }
            }
            public var hasTypeField:Bool {
                get {
                    return builderResult.hasTypeField
                }
            }
            fileprivate var typeFieldBuilder_:Google.Protobuf.ProtoType.Builder! {
                didSet {
                    builderResult.hasTypeField = true
                }
            }
            public func getTypeFieldBuilder() -> Google.Protobuf.ProtoType.Builder {
                if typeFieldBuilder_ == nil {
                    typeFieldBuilder_ = Google.Protobuf.ProtoType.Builder()
                    builderResult.typeField = typeFieldBuilder_.getMessage()
                    if typeField != nil {
                        try! typeFieldBuilder_.mergeFrom(other: typeField)
                    }
                }
                return typeFieldBuilder_
            }
            @discardableResult
            public func setTypeField(_ value:Google.Protobuf.ProtoType!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.typeField = value
                return self
            }
            @discardableResult
            public func mergeTypeField(value:Google.Protobuf.ProtoType) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasTypeField {
                    builderResult.typeField = try Google.Protobuf.ProtoType.builderWithPrototype(prototype:builderResult.typeField).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.typeField = value
                }
                builderResult.hasTypeField = true
                return self
            }
            @discardableResult
            public func clearTypeField() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                typeFieldBuilder_ = nil
                builderResult.hasTypeField = false
                builderResult.typeField = nil
                return self
            }
            public var int32Field:Google.Protobuf.Int32Value! {
                get {
                    if int32FieldBuilder_ != nil {
                        builderResult.int32Field = int32FieldBuilder_.getMessage()
                    }
                    return builderResult.int32Field
                }
                set (value) {
                    builderResult.hasInt32Field = value != nil
                    builderResult.int32Field = value
                }
            }
            public var hasInt32Field:Bool {
                get {
                    return builderResult.hasInt32Field
                }
            }
            fileprivate var int32FieldBuilder_:Google.Protobuf.Int32Value.Builder! {
                didSet {
                    builderResult.hasInt32Field = true
                }
            }
            public func getInt32FieldBuilder() -> Google.Protobuf.Int32Value.Builder {
                if int32FieldBuilder_ == nil {
                    int32FieldBuilder_ = Google.Protobuf.Int32Value.Builder()
                    builderResult.int32Field = int32FieldBuilder_.getMessage()
                    if int32Field != nil {
                        try! int32FieldBuilder_.mergeFrom(other: int32Field)
                    }
                }
                return int32FieldBuilder_
            }
            @discardableResult
            public func setInt32Field(_ value:Google.Protobuf.Int32Value!) -> ProtobufUnittest.TestWellKnownTypes.Builder {
                self.int32Field = value
                return self
            }
            @discardableResult
            public func mergeInt32Field(value:Google.Protobuf.Int32Value) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if builderResult.hasInt32Field {
                    builderResult.int32Field = try Google.Protobuf.Int32Value.builderWithPrototype(prototype:builderResult.int32Field).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.int32Field = value
                }
                builderResult.hasInt32Field = true
                return self
            }
            @discardableResult
            public func clearInt32Field() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                int32FieldBuilder_ = nil
                builderResult.hasInt32Field = false
                builderResult.int32Field = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestWellKnownTypes.Builder {
                builderResult = ProtobufUnittest.TestWellKnownTypes()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                return try ProtobufUnittest.TestWellKnownTypes.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestWellKnownTypes {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestWellKnownTypes {
                let returnMe:ProtobufUnittest.TestWellKnownTypes = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestWellKnownTypes) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                if other == ProtobufUnittest.TestWellKnownTypes() {
                    return self
                }
                if (other.hasAnyField) {
                    try mergeAnyField(value: other.anyField)
                }
                if (other.hasApiField) {
                    try mergeApiField(value: other.apiField)
                }
                if (other.hasDurationField) {
                    try mergeDurationField(value: other.durationField)
                }
                if (other.hasEmptyField) {
                    try mergeEmptyField(value: other.emptyField)
                }
                if (other.hasFieldMaskField) {
                    try mergeFieldMaskField(value: other.fieldMaskField)
                }
                if (other.hasSourceContextField) {
                    try mergeSourceContextField(value: other.sourceContextField)
                }
                if (other.hasStructField) {
                    try mergeStructField(value: other.structField)
                }
                if (other.hasTimestampField) {
                    try mergeTimestampField(value: other.timestampField)
                }
                if (other.hasTypeField) {
                    try mergeTypeField(value: other.typeField)
                }
                if (other.hasInt32Field) {
                    try mergeInt32Field(value: other.int32Field)
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                let unknownFieldsBuilder:UnknownFieldSet.Builder = try UnknownFieldSet.builderWithUnknownFields(copyFrom:self.unknownFields)
                while (true) {
                    let protobufTag = try codedInputStream.readTag()
                    switch protobufTag {
                    case 0: 
                        self.unknownFields = try unknownFieldsBuilder.build()
                        return self

                    case 10:
                        let subBuilder:Google.Protobuf.`Any`.Builder = Google.Protobuf.`Any`.Builder()
                        if hasAnyField {
                            try subBuilder.mergeFrom(other: anyField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        anyField = subBuilder.buildPartial()

                    case 18:
                        let subBuilder:Google.Protobuf.Api.Builder = Google.Protobuf.Api.Builder()
                        if hasApiField {
                            try subBuilder.mergeFrom(other: apiField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        apiField = subBuilder.buildPartial()

                    case 26:
                        let subBuilder:Google.Protobuf.Duration.Builder = Google.Protobuf.Duration.Builder()
                        if hasDurationField {
                            try subBuilder.mergeFrom(other: durationField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        durationField = subBuilder.buildPartial()

                    case 34:
                        let subBuilder:Google.Protobuf.Empty.Builder = Google.Protobuf.Empty.Builder()
                        if hasEmptyField {
                            try subBuilder.mergeFrom(other: emptyField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        emptyField = subBuilder.buildPartial()

                    case 42:
                        let subBuilder:Google.Protobuf.FieldMask.Builder = Google.Protobuf.FieldMask.Builder()
                        if hasFieldMaskField {
                            try subBuilder.mergeFrom(other: fieldMaskField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        fieldMaskField = subBuilder.buildPartial()

                    case 50:
                        let subBuilder:Google.Protobuf.SourceContext.Builder = Google.Protobuf.SourceContext.Builder()
                        if hasSourceContextField {
                            try subBuilder.mergeFrom(other: sourceContextField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        sourceContextField = subBuilder.buildPartial()

                    case 58:
                        let subBuilder:Google.Protobuf.Struct.Builder = Google.Protobuf.Struct.Builder()
                        if hasStructField {
                            try subBuilder.mergeFrom(other: structField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        structField = subBuilder.buildPartial()

                    case 66:
                        let subBuilder:Google.Protobuf.Timestamp.Builder = Google.Protobuf.Timestamp.Builder()
                        if hasTimestampField {
                            try subBuilder.mergeFrom(other: timestampField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        timestampField = subBuilder.buildPartial()

                    case 74:
                        let subBuilder:Google.Protobuf.ProtoType.Builder = Google.Protobuf.ProtoType.Builder()
                        if hasTypeField {
                            try subBuilder.mergeFrom(other: typeField)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        typeField = subBuilder.buildPartial()

                    case 82:
                        let subBuilder:Google.Protobuf.Int32Value.Builder = Google.Protobuf.Int32Value.Builder()
                        if hasInt32Field {
                            try subBuilder.mergeFrom(other: int32Field)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        int32Field = subBuilder.buildPartial()

                    default:
                        if (!(try parse(codedInputStream:codedInputStream, unknownFields:unknownFieldsBuilder, extensionRegistry:extensionRegistry, tag:protobufTag))) {
                            unknownFields = try unknownFieldsBuilder.build()
                            return self
                        }
                    }
                }
            }
            class override public func decodeToBuilder(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestWellKnownTypes.Builder()
                if let jsonValueAnyField = jsonMap["anyField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.anyField = try Google.Protobuf.`Any`.Builder.decodeToBuilder(jsonMap:jsonValueAnyField).build()

                }
                if let jsonValueApiField = jsonMap["apiField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.apiField = try Google.Protobuf.Api.Builder.decodeToBuilder(jsonMap:jsonValueApiField).build()

                }
                if let jsonValueDurationField = jsonMap["durationField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.durationField = try Google.Protobuf.Duration.Builder.decodeToBuilder(jsonMap:jsonValueDurationField).build()

                }
                if let jsonValueEmptyField = jsonMap["emptyField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.emptyField = try Google.Protobuf.Empty.Builder.decodeToBuilder(jsonMap:jsonValueEmptyField).build()

                }
                if let jsonValueFieldMaskField = jsonMap["fieldMaskField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.fieldMaskField = try Google.Protobuf.FieldMask.Builder.decodeToBuilder(jsonMap:jsonValueFieldMaskField).build()

                }
                if let jsonValueSourceContextField = jsonMap["sourceContextField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.sourceContextField = try Google.Protobuf.SourceContext.Builder.decodeToBuilder(jsonMap:jsonValueSourceContextField).build()

                }
                if let jsonValueStructField = jsonMap["structField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.structField = try Google.Protobuf.Struct.Builder.decodeToBuilder(jsonMap:jsonValueStructField).build()

                }
                if let jsonValueTimestampField = jsonMap["timestampField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.timestampField = try Google.Protobuf.Timestamp.Builder.decodeToBuilder(jsonMap:jsonValueTimestampField).build()

                }
                if let jsonValueTypeField = jsonMap["typeField"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.typeField = try Google.Protobuf.ProtoType.Builder.decodeToBuilder(jsonMap:jsonValueTypeField).build()

                }
                if let jsonValueInt32Field = jsonMap["int32Field"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.int32Field = try Google.Protobuf.Int32Value.Builder.decodeToBuilder(jsonMap:jsonValueInt32Field).build()

                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestWellKnownTypes.Builder {
                let jsonData = try JSONSerialization.jsonObject(with:data, options: options)
                guard let jsDataCast = jsonData as? Dictionary<String,Any> else {
                  throw ProtocolBuffersError.invalidProtocolBuffer("Invalid JSON data")
                }
                return try ProtobufUnittest.TestWellKnownTypes.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

}
extension ProtobufUnittest.TestWellKnownTypes: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestWellKnownTypes> {
        var mergedArray = Array<ProtobufUnittest.TestWellKnownTypes>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestWellKnownTypes? {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestWellKnownTypesRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestWellKnownTypes {
        return try ProtobufUnittest.TestWellKnownTypes.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "anyField": return self.anyField
        case "apiField": return self.apiField
        case "durationField": return self.durationField
        case "emptyField": return self.emptyField
        case "fieldMaskField": return self.fieldMaskField
        case "sourceContextField": return self.sourceContextField
        case "structField": return self.structField
        case "timestampField": return self.timestampField
        case "typeField": return self.typeField
        case "int32Field": return self.int32Field
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestWellKnownTypes.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestWellKnownTypes
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "anyField": return self.anyField
            case "apiField": return self.apiField
            case "durationField": return self.durationField
            case "emptyField": return self.emptyField
            case "fieldMaskField": return self.fieldMaskField
            case "sourceContextField": return self.sourceContextField
            case "structField": return self.structField
            case "timestampField": return self.timestampField
            case "typeField": return self.typeField
            case "int32Field": return self.int32Field
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "anyField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.`Any` else {
                    return
                }
                self.anyField = newSubscriptValue
            case "apiField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Api else {
                    return
                }
                self.apiField = newSubscriptValue
            case "durationField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Duration else {
                    return
                }
                self.durationField = newSubscriptValue
            case "emptyField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Empty else {
                    return
                }
                self.emptyField = newSubscriptValue
            case "fieldMaskField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.FieldMask else {
                    return
                }
                self.fieldMaskField = newSubscriptValue
            case "sourceContextField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.SourceContext else {
                    return
                }
                self.sourceContextField = newSubscriptValue
            case "structField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Struct else {
                    return
                }
                self.structField = newSubscriptValue
            case "timestampField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Timestamp else {
                    return
                }
                self.timestampField = newSubscriptValue
            case "typeField":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.ProtoType else {
                    return
                }
                self.typeField = newSubscriptValue
            case "int32Field":
                guard let newSubscriptValue = newSubscriptValue as? Google.Protobuf.Int32Value else {
                    return
                }
                self.int32Field = newSubscriptValue
            default: return
            }
        }
    }
}

// @@protoc_insertion_point(global_scope)
