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

import Foundation
import ProtocolBuffers


public extension ProtobufUnittest{}

/// Singular
public var UnittestLiteRootoptionalInt32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalInt32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalInt64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalInt64ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalUint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalUint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalUint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalUint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalSint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalSint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalSint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalSint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalFixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalFixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalFixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalFixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalSfixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalSfixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalSfixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalSfixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalFloatExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalFloatExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalDoubleExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalDoubleExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalBoolExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalBoolExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalStringExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalStringExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalBytesExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalBytesExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalGroupExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalGroupExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalNestedMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalNestedMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalForeignMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalForeignMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalImportMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalImportMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalNestedEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalNestedEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalForeignEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalForeignEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalImportEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalImportEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalStringPieceExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalStringPieceExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalCordExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalCordExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalPublicImportMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalPublicImportMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootoptionalLazyMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoptionalLazyMessageExtensionLiteStatic
    }
}
/// Repeated
public var UnittestLiteRootrepeatedInt32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedInt32ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedInt64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedInt64ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedUint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedUint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedUint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedUint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedSint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedSint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedSint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedSint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedFixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedFixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedFixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedFixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedSfixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedSfixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedSfixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedSfixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedFloatExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedFloatExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedDoubleExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedDoubleExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedBoolExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedBoolExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedStringExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedStringExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedBytesExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedBytesExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedGroupExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedGroupExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedNestedMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedNestedMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedForeignMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedForeignMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedImportMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedImportMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedNestedEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedNestedEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedForeignEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedForeignEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedImportEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedImportEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedStringPieceExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedStringPieceExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedCordExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedCordExtensionLiteStatic
    }
}
public var UnittestLiteRootrepeatedLazyMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootrepeatedLazyMessageExtensionLiteStatic
    }
}
/// Singular with defaults
public var UnittestLiteRootdefaultInt32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultInt32ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultInt64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultInt64ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultUint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultUint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultUint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultUint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultSint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultSint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultSint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultSint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultFixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultFixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultFixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultFixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultSfixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultSfixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultSfixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultSfixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultFloatExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultFloatExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultDoubleExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultDoubleExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultBoolExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultBoolExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultStringExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultStringExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultBytesExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultBytesExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultNestedEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultNestedEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultForeignEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultForeignEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultImportEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultImportEnumExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultStringPieceExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultStringPieceExtensionLiteStatic
    }
}
public var UnittestLiteRootdefaultCordExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootdefaultCordExtensionLiteStatic
    }
}
/// For oneof test
public var UnittestLiteRootoneofUint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoneofUint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootoneofNestedMessageExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoneofNestedMessageExtensionLiteStatic
    }
}
public var UnittestLiteRootoneofStringExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoneofStringExtensionLiteStatic
    }
}
public var UnittestLiteRootoneofBytesExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootoneofBytesExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedInt32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedInt32ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedInt64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedInt64ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedUint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedUint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedUint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedUint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedSint32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedSint32ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedSint64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedSint64ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedFixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedFixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedFixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedFixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedSfixed32ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedSfixed32ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedSfixed64ExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedSfixed64ExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedFloatExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedFloatExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedDoubleExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedDoubleExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedBoolExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedBoolExtensionLiteStatic
    }
}
public var UnittestLiteRootpackedEnumExtensionLite:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.UnittestLiteRootpackedEnumExtensionLiteStatic
    }
}
public var TestNestedExtensionLitenestedExtension:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.TestNestedExtensionLitenestedExtensionStatic
    }
}
public var TestParsingMergeLiteoptionalExt:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.TestParsingMergeLiteoptionalExtStatic
    }
}
public var TestParsingMergeLiterepeatedExt:ConcreateExtensionField {
    get {
        return ProtobufUnittest.UnittestLiteRoot.default.TestParsingMergeLiterepeatedExtStatic
    }
}
public extension ProtobufUnittest {
    public struct UnittestLiteRoot {
        public static let `default` = UnittestLiteRoot()
        var UnittestLiteRootoptionalInt32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalInt64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalUint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalUint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalSint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalSint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalFixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalFixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalSfixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalSfixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalFloatExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalDoubleExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalBoolExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalStringExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalBytesExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalGroupExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalNestedMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalForeignMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalImportMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalNestedEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalForeignEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalImportEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalStringPieceExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalCordExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalPublicImportMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoptionalLazyMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedInt32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedInt64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedUint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedUint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedSint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedSint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedFixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedFixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedSfixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedSfixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedFloatExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedDoubleExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedBoolExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedStringExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedBytesExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedGroupExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedNestedMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedForeignMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedImportMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedNestedEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedForeignEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedImportEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedStringPieceExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedCordExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootrepeatedLazyMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultInt32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultInt64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultUint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultUint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultSint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultSint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultFixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultFixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultSfixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultSfixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultFloatExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultDoubleExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultBoolExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultStringExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultBytesExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultNestedEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultForeignEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultImportEnumExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultStringPieceExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootdefaultCordExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoneofUint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoneofNestedMessageExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoneofStringExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootoneofBytesExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedInt32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedInt64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedUint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedUint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedSint32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedSint64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedFixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedFixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedSfixed32ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedSfixed64ExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedFloatExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedDoubleExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedBoolExtensionLiteStatic:ConcreateExtensionField
        var UnittestLiteRootpackedEnumExtensionLiteStatic:ConcreateExtensionField
        var TestNestedExtensionLitenestedExtensionStatic:ConcreateExtensionField
        var TestParsingMergeLiteoptionalExtStatic:ConcreateExtensionField
        var TestParsingMergeLiterepeatedExtStatic:ConcreateExtensionField
        public var extensionRegistry:ExtensionRegistry

        init() {
            UnittestLiteRootoptionalInt32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 1, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalInt64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 2, defaultValue:nil, messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalUint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 3, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalUint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 4, defaultValue:nil, messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalSint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 5, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalSint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 6, defaultValue:nil, messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalFixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 7, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalFixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 8, defaultValue:nil, messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalSfixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 9, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalSfixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 10, defaultValue:nil, messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalFloatExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFloat, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 11, defaultValue:nil, messageOrGroupClass:Float.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalDoubleExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeDouble, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 12, defaultValue:nil, messageOrGroupClass:Double.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalBoolExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBool, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 13, defaultValue:nil, messageOrGroupClass:Bool.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalStringExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 14, defaultValue:nil, messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalBytesExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBytes, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 15, defaultValue:nil, messageOrGroupClass:Data.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalGroupExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeGroup, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 16, defaultValue:ProtobufUnittest.OptionalGroupExtensionLite(), messageOrGroupClass:ProtobufUnittest.OptionalGroupExtensionLite.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalNestedMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 18, defaultValue:ProtobufUnittest.TestAllTypesLite.NestedMessage(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.NestedMessage.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalForeignMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 19, defaultValue:ProtobufUnittest.ForeignMessageLite(), messageOrGroupClass:ProtobufUnittest.ForeignMessageLite.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalImportMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 20, defaultValue:ProtobufUnittestImport.ImportMessageLite(), messageOrGroupClass:ProtobufUnittestImport.ImportMessageLite.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalNestedEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 21, defaultValue:ProtobufUnittest.TestAllTypesLite.NestedEnum.foo.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalForeignEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 22, defaultValue:ProtobufUnittest.ForeignEnumLite.foreignLiteFoo.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalImportEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 23, defaultValue:ProtobufUnittestImport.ImportEnumLite.importLiteFoo.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalStringPieceExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 24, defaultValue:nil, messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalCordExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 25, defaultValue:nil, messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalPublicImportMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 26, defaultValue:ProtobufUnittestImport.PublicImportMessageLite(), messageOrGroupClass:ProtobufUnittestImport.PublicImportMessageLite.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoptionalLazyMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 27, defaultValue:ProtobufUnittest.TestAllTypesLite.NestedMessage(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.NestedMessage.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedInt32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 31, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedInt64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 32, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedUint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 33, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedUint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 34, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedSint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 35, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedSint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 36, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedFixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 37, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedFixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 38, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedSfixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 39, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedSfixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 40, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedFloatExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFloat, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 41, defaultValue:Array<Float>(), messageOrGroupClass:Float.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedDoubleExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeDouble, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 42, defaultValue:Array<Double>(), messageOrGroupClass:Double.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedBoolExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBool, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 43, defaultValue:Array<Bool>(), messageOrGroupClass:Bool.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedStringExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 44, defaultValue:Array<String>(), messageOrGroupClass:String.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedBytesExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBytes, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 45, defaultValue:Array<Data>(), messageOrGroupClass:Data.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedGroupExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeGroup, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 46, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittest.RepeatedGroupExtensionLite.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedNestedMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 48, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.NestedMessage.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedForeignMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 49, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittest.ForeignMessageLite.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedImportMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 50, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittestImport.ImportMessageLite.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedNestedEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 51, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedForeignEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 52, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedImportEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 53, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedStringPieceExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 54, defaultValue:Array<String>(), messageOrGroupClass:String.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedCordExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 55, defaultValue:Array<String>(), messageOrGroupClass:String.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootrepeatedLazyMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 57, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.NestedMessage.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultInt32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 61, defaultValue:Int32(41), messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultInt64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 62, defaultValue:Int64(42), messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultUint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 63, defaultValue:UInt32(43), messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultUint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 64, defaultValue:UInt64(44), messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultSint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 65, defaultValue:Int32(-45), messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultSint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 66, defaultValue:Int64(46), messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultFixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 67, defaultValue:UInt32(47), messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultFixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 68, defaultValue:UInt64(48), messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultSfixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 69, defaultValue:Int32(49), messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultSfixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed64, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 70, defaultValue:Int64(-50), messageOrGroupClass:Int64.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultFloatExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFloat, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 71, defaultValue:Float(51.5), messageOrGroupClass:Float.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultDoubleExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeDouble, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 72, defaultValue:Double(52000), messageOrGroupClass:Double.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultBoolExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBool, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 73, defaultValue:true, messageOrGroupClass:Bool.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultStringExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 74, defaultValue:"hello", messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultBytesExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBytes, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 75, defaultValue:Data(bytes:([UInt8]() + "world".utf8), count:5), messageOrGroupClass:Data.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultNestedEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 81, defaultValue:ProtobufUnittest.TestAllTypesLite.NestedEnum.bar.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultForeignEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 82, defaultValue:ProtobufUnittest.ForeignEnumLite.foreignLiteBar.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultImportEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 83, defaultValue:ProtobufUnittestImport.ImportEnumLite.importLiteBar.rawValue, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultStringPieceExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 84, defaultValue:"abc", messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootdefaultCordExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 85, defaultValue:"123", messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoneofUint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 111, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoneofNestedMessageExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 112, defaultValue:ProtobufUnittest.TestAllTypesLite.NestedMessage(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.NestedMessage.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoneofStringExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeString, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 113, defaultValue:nil, messageOrGroupClass:String.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootoneofBytesExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBytes, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 114, defaultValue:nil, messageOrGroupClass:Data.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            UnittestLiteRootpackedInt32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt32, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 90, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedInt64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt64, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 91, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedUint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt32, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 92, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedUint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeUInt64, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 93, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedSint32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt32, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 94, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedSint64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSInt64, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 95, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedFixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed32, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 96, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedFixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFixed64, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 97, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedSfixed32ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed32, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 98, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedSfixed64ExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeSFixed64, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 99, defaultValue:Array<Int64>(), messageOrGroupClass:Int64.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedFloatExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeFloat, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 100, defaultValue:Array<Float>(), messageOrGroupClass:Float.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedDoubleExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeDouble, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 101, defaultValue:Array<Double>(), messageOrGroupClass:Double.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedBoolExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeBool, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 102, defaultValue:Array<Bool>(), messageOrGroupClass:Bool.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            UnittestLiteRootpackedEnumExtensionLiteStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeEnum, extendedClass:ProtobufUnittest.TestPackedExtensionsLite.self, fieldNumber: 103, defaultValue:Array<Int32>(), messageOrGroupClass:Int32.self, isRepeated:true, isPacked:true, isMessageSetWireFormat:false)
            TestNestedExtensionLitenestedExtensionStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeInt32, extendedClass:ProtobufUnittest.TestAllExtensionsLite.self, fieldNumber: 12345, defaultValue:nil, messageOrGroupClass:Int32.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            TestParsingMergeLiteoptionalExtStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestParsingMergeLite.self, fieldNumber: 1000, defaultValue:ProtobufUnittest.TestAllTypesLite(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.self, isRepeated:false, isPacked:false, isMessageSetWireFormat:false)
            TestParsingMergeLiterepeatedExtStatic = ConcreateExtensionField(type:ExtensionType.extensionTypeMessage, extendedClass:ProtobufUnittest.TestParsingMergeLite.self, fieldNumber: 1001, defaultValue:Array<GeneratedMessage>(), messageOrGroupClass:ProtobufUnittest.TestAllTypesLite.self, isRepeated:true, isPacked:false, isMessageSetWireFormat:false)
            extensionRegistry = ExtensionRegistry()
            registerAllExtensions(registry: extensionRegistry)
            ProtobufUnittestImport.UnittestImportLiteRoot.default.registerAllExtensions(registry: extensionRegistry)
        }
        public func registerAllExtensions(registry: ExtensionRegistry) {
            registry.addExtension(extensions: UnittestLiteRootoptionalInt32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalInt64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalUint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalUint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalSint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalSint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalFixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalFixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalSfixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalSfixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalFloatExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalDoubleExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalBoolExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalStringExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalBytesExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalGroupExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalNestedMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalForeignMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalImportMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalNestedEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalForeignEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalImportEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalStringPieceExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalCordExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalPublicImportMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoptionalLazyMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedInt32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedInt64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedUint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedUint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedSint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedSint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedFixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedFixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedSfixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedSfixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedFloatExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedDoubleExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedBoolExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedStringExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedBytesExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedGroupExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedNestedMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedForeignMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedImportMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedNestedEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedForeignEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedImportEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedStringPieceExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedCordExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootrepeatedLazyMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultInt32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultInt64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultUint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultUint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultSint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultSint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultFixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultFixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultSfixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultSfixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultFloatExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultDoubleExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultBoolExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultStringExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultBytesExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultNestedEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultForeignEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultImportEnumExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultStringPieceExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootdefaultCordExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoneofUint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoneofNestedMessageExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoneofStringExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootoneofBytesExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedInt32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedInt64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedUint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedUint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedSint32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedSint64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedFixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedFixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedSfixed32ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedSfixed64ExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedFloatExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedDoubleExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedBoolExtensionLiteStatic)
            registry.addExtension(extensions: UnittestLiteRootpackedEnumExtensionLiteStatic)
            registry.addExtension(extensions: TestNestedExtensionLitenestedExtensionStatic)
            registry.addExtension(extensions: TestParsingMergeLiteoptionalExtStatic)
            registry.addExtension(extensions: TestParsingMergeLiterepeatedExtStatic)
        }
        public static func optionalInt32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalInt32ExtensionLiteStatic
        }
        public static func optionalInt64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalInt64ExtensionLiteStatic
        }
        public static func optionalUint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalUint32ExtensionLiteStatic
        }
        public static func optionalUint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalUint64ExtensionLiteStatic
        }
        public static func optionalSint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalSint32ExtensionLiteStatic
        }
        public static func optionalSint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalSint64ExtensionLiteStatic
        }
        public static func optionalFixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalFixed32ExtensionLiteStatic
        }
        public static func optionalFixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalFixed64ExtensionLiteStatic
        }
        public static func optionalSfixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalSfixed32ExtensionLiteStatic
        }
        public static func optionalSfixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalSfixed64ExtensionLiteStatic
        }
        public static func optionalFloatExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalFloatExtensionLiteStatic
        }
        public static func optionalDoubleExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalDoubleExtensionLiteStatic
        }
        public static func optionalBoolExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalBoolExtensionLiteStatic
        }
        public static func optionalStringExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalStringExtensionLiteStatic
        }
        public static func optionalBytesExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalBytesExtensionLiteStatic
        }
        public static func optionalGroupExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalGroupExtensionLiteStatic
        }
        public static func optionalNestedMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalNestedMessageExtensionLiteStatic
        }
        public static func optionalForeignMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalForeignMessageExtensionLiteStatic
        }
        public static func optionalImportMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalImportMessageExtensionLiteStatic
        }
        public static func optionalNestedEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalNestedEnumExtensionLiteStatic
        }
        public static func optionalForeignEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalForeignEnumExtensionLiteStatic
        }
        public static func optionalImportEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalImportEnumExtensionLiteStatic
        }
        public static func optionalStringPieceExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalStringPieceExtensionLiteStatic
        }
        public static func optionalCordExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalCordExtensionLiteStatic
        }
        public static func optionalPublicImportMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalPublicImportMessageExtensionLiteStatic
        }
        public static func optionalLazyMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoptionalLazyMessageExtensionLiteStatic
        }
        public static func repeatedInt32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedInt32ExtensionLiteStatic
        }
        public static func repeatedInt64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedInt64ExtensionLiteStatic
        }
        public static func repeatedUint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedUint32ExtensionLiteStatic
        }
        public static func repeatedUint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedUint64ExtensionLiteStatic
        }
        public static func repeatedSint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedSint32ExtensionLiteStatic
        }
        public static func repeatedSint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedSint64ExtensionLiteStatic
        }
        public static func repeatedFixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedFixed32ExtensionLiteStatic
        }
        public static func repeatedFixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedFixed64ExtensionLiteStatic
        }
        public static func repeatedSfixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedSfixed32ExtensionLiteStatic
        }
        public static func repeatedSfixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedSfixed64ExtensionLiteStatic
        }
        public static func repeatedFloatExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedFloatExtensionLiteStatic
        }
        public static func repeatedDoubleExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedDoubleExtensionLiteStatic
        }
        public static func repeatedBoolExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedBoolExtensionLiteStatic
        }
        public static func repeatedStringExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedStringExtensionLiteStatic
        }
        public static func repeatedBytesExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedBytesExtensionLiteStatic
        }
        public static func repeatedGroupExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedGroupExtensionLiteStatic
        }
        public static func repeatedNestedMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedNestedMessageExtensionLiteStatic
        }
        public static func repeatedForeignMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedForeignMessageExtensionLiteStatic
        }
        public static func repeatedImportMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedImportMessageExtensionLiteStatic
        }
        public static func repeatedNestedEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedNestedEnumExtensionLiteStatic
        }
        public static func repeatedForeignEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedForeignEnumExtensionLiteStatic
        }
        public static func repeatedImportEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedImportEnumExtensionLiteStatic
        }
        public static func repeatedStringPieceExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedStringPieceExtensionLiteStatic
        }
        public static func repeatedCordExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedCordExtensionLiteStatic
        }
        public static func repeatedLazyMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootrepeatedLazyMessageExtensionLiteStatic
        }
        public static func defaultInt32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultInt32ExtensionLiteStatic
        }
        public static func defaultInt64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultInt64ExtensionLiteStatic
        }
        public static func defaultUint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultUint32ExtensionLiteStatic
        }
        public static func defaultUint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultUint64ExtensionLiteStatic
        }
        public static func defaultSint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultSint32ExtensionLiteStatic
        }
        public static func defaultSint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultSint64ExtensionLiteStatic
        }
        public static func defaultFixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultFixed32ExtensionLiteStatic
        }
        public static func defaultFixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultFixed64ExtensionLiteStatic
        }
        public static func defaultSfixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultSfixed32ExtensionLiteStatic
        }
        public static func defaultSfixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultSfixed64ExtensionLiteStatic
        }
        public static func defaultFloatExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultFloatExtensionLiteStatic
        }
        public static func defaultDoubleExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultDoubleExtensionLiteStatic
        }
        public static func defaultBoolExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultBoolExtensionLiteStatic
        }
        public static func defaultStringExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultStringExtensionLiteStatic
        }
        public static func defaultBytesExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultBytesExtensionLiteStatic
        }
        public static func defaultNestedEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultNestedEnumExtensionLiteStatic
        }
        public static func defaultForeignEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultForeignEnumExtensionLiteStatic
        }
        public static func defaultImportEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultImportEnumExtensionLiteStatic
        }
        public static func defaultStringPieceExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultStringPieceExtensionLiteStatic
        }
        public static func defaultCordExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootdefaultCordExtensionLiteStatic
        }
        public static func oneofUint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoneofUint32ExtensionLiteStatic
        }
        public static func oneofNestedMessageExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoneofNestedMessageExtensionLiteStatic
        }
        public static func oneofStringExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoneofStringExtensionLiteStatic
        }
        public static func oneofBytesExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootoneofBytesExtensionLiteStatic
        }
        public static func packedInt32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedInt32ExtensionLiteStatic
        }
        public static func packedInt64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedInt64ExtensionLiteStatic
        }
        public static func packedUint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedUint32ExtensionLiteStatic
        }
        public static func packedUint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedUint64ExtensionLiteStatic
        }
        public static func packedSint32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedSint32ExtensionLiteStatic
        }
        public static func packedSint64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedSint64ExtensionLiteStatic
        }
        public static func packedFixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedFixed32ExtensionLiteStatic
        }
        public static func packedFixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedFixed64ExtensionLiteStatic
        }
        public static func packedSfixed32ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedSfixed32ExtensionLiteStatic
        }
        public static func packedSfixed64ExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedSfixed64ExtensionLiteStatic
        }
        public static func packedFloatExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedFloatExtensionLiteStatic
        }
        public static func packedDoubleExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedDoubleExtensionLiteStatic
        }
        public static func packedBoolExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedBoolExtensionLiteStatic
        }
        public static func packedEnumExtensionLite() -> ConcreateExtensionField {
               return UnittestLiteRoot.default.UnittestLiteRootpackedEnumExtensionLiteStatic
        }
    }



    //Enum type declaration start 

    public enum ForeignEnumLite:Int32, GeneratedEnum {
        case foreignLiteFoo = 4
        case foreignLiteBar = 5
        case foreignLiteBaz = 6
        public func toString() -> String {
            switch self {
            case .foreignLiteFoo: return "FOREIGN_LITE_FOO"
            case .foreignLiteBar: return "FOREIGN_LITE_BAR"
            case .foreignLiteBaz: return "FOREIGN_LITE_BAZ"
            }
        }
        public static func fromString(_ str:String) throws -> ProtobufUnittest.ForeignEnumLite {
            switch str {
            case "FOREIGN_LITE_FOO":    return .foreignLiteFoo
            case "FOREIGN_LITE_BAR":    return .foreignLiteBar
            case "FOREIGN_LITE_BAZ":    return .foreignLiteBaz
            default: throw ProtocolBuffersError.invalidProtocolBuffer("Conversion failed.")
            }
        }
        public var debugDescription:String { return getDescription() }
        public var description:String { return getDescription() }
        private func getDescription() -> String { 
            switch self {
            case .foreignLiteFoo: return ".foreignLiteFoo"
            case .foreignLiteBar: return ".foreignLiteBar"
            case .foreignLiteBaz: return ".foreignLiteBaz"
            }
        }
        public var hashValue:Int {
            return self.rawValue.hashValue
        }
        public static func ==(lhs:ForeignEnumLite, rhs:ForeignEnumLite) -> Bool {
            return lhs.hashValue == rhs.hashValue
        }
    }

    //Enum type declaration end 

    /// Same as TestAllTypes but with the lite runtime.
    final public class TestAllTypesLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestAllTypesLite.Builder

        public static func == (lhs: ProtobufUnittest.TestAllTypesLite, rhs: ProtobufUnittest.TestAllTypesLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasOptionalInt32 == rhs.hasOptionalInt32) && (!lhs.hasOptionalInt32 || lhs.optionalInt32 == rhs.optionalInt32)
            fieldCheck = fieldCheck && (lhs.hasOptionalInt64 == rhs.hasOptionalInt64) && (!lhs.hasOptionalInt64 || lhs.optionalInt64 == rhs.optionalInt64)
            fieldCheck = fieldCheck && (lhs.hasOptionalUint32 == rhs.hasOptionalUint32) && (!lhs.hasOptionalUint32 || lhs.optionalUint32 == rhs.optionalUint32)
            fieldCheck = fieldCheck && (lhs.hasOptionalUint64 == rhs.hasOptionalUint64) && (!lhs.hasOptionalUint64 || lhs.optionalUint64 == rhs.optionalUint64)
            fieldCheck = fieldCheck && (lhs.hasOptionalSint32 == rhs.hasOptionalSint32) && (!lhs.hasOptionalSint32 || lhs.optionalSint32 == rhs.optionalSint32)
            fieldCheck = fieldCheck && (lhs.hasOptionalSint64 == rhs.hasOptionalSint64) && (!lhs.hasOptionalSint64 || lhs.optionalSint64 == rhs.optionalSint64)
            fieldCheck = fieldCheck && (lhs.hasOptionalFixed32 == rhs.hasOptionalFixed32) && (!lhs.hasOptionalFixed32 || lhs.optionalFixed32 == rhs.optionalFixed32)
            fieldCheck = fieldCheck && (lhs.hasOptionalFixed64 == rhs.hasOptionalFixed64) && (!lhs.hasOptionalFixed64 || lhs.optionalFixed64 == rhs.optionalFixed64)
            fieldCheck = fieldCheck && (lhs.hasOptionalSfixed32 == rhs.hasOptionalSfixed32) && (!lhs.hasOptionalSfixed32 || lhs.optionalSfixed32 == rhs.optionalSfixed32)
            fieldCheck = fieldCheck && (lhs.hasOptionalSfixed64 == rhs.hasOptionalSfixed64) && (!lhs.hasOptionalSfixed64 || lhs.optionalSfixed64 == rhs.optionalSfixed64)
            fieldCheck = fieldCheck && (lhs.hasOptionalFloat == rhs.hasOptionalFloat) && (!lhs.hasOptionalFloat || lhs.optionalFloat == rhs.optionalFloat)
            fieldCheck = fieldCheck && (lhs.hasOptionalDouble == rhs.hasOptionalDouble) && (!lhs.hasOptionalDouble || lhs.optionalDouble == rhs.optionalDouble)
            fieldCheck = fieldCheck && (lhs.hasOptionalBool == rhs.hasOptionalBool) && (!lhs.hasOptionalBool || lhs.optionalBool == rhs.optionalBool)
            fieldCheck = fieldCheck && (lhs.hasOptionalString == rhs.hasOptionalString) && (!lhs.hasOptionalString || lhs.optionalString == rhs.optionalString)
            fieldCheck = fieldCheck && (lhs.hasOptionalBytes == rhs.hasOptionalBytes) && (!lhs.hasOptionalBytes || lhs.optionalBytes == rhs.optionalBytes)
            fieldCheck = fieldCheck && (lhs.hasOptionalGroup == rhs.hasOptionalGroup) && (!lhs.hasOptionalGroup || lhs.optionalGroup == rhs.optionalGroup)
            fieldCheck = fieldCheck && (lhs.hasOptionalNestedMessage == rhs.hasOptionalNestedMessage) && (!lhs.hasOptionalNestedMessage || lhs.optionalNestedMessage == rhs.optionalNestedMessage)
            fieldCheck = fieldCheck && (lhs.hasOptionalForeignMessage == rhs.hasOptionalForeignMessage) && (!lhs.hasOptionalForeignMessage || lhs.optionalForeignMessage == rhs.optionalForeignMessage)
            fieldCheck = fieldCheck && (lhs.hasOptionalImportMessage == rhs.hasOptionalImportMessage) && (!lhs.hasOptionalImportMessage || lhs.optionalImportMessage == rhs.optionalImportMessage)
            fieldCheck = fieldCheck && (lhs.hasOptionalNestedEnum == rhs.hasOptionalNestedEnum) && (!lhs.hasOptionalNestedEnum || lhs.optionalNestedEnum == rhs.optionalNestedEnum)
            fieldCheck = fieldCheck && (lhs.hasOptionalForeignEnum == rhs.hasOptionalForeignEnum) && (!lhs.hasOptionalForeignEnum || lhs.optionalForeignEnum == rhs.optionalForeignEnum)
            fieldCheck = fieldCheck && (lhs.hasOptionalImportEnum == rhs.hasOptionalImportEnum) && (!lhs.hasOptionalImportEnum || lhs.optionalImportEnum == rhs.optionalImportEnum)
            fieldCheck = fieldCheck && (lhs.hasOptionalStringPiece == rhs.hasOptionalStringPiece) && (!lhs.hasOptionalStringPiece || lhs.optionalStringPiece == rhs.optionalStringPiece)
            fieldCheck = fieldCheck && (lhs.hasOptionalCord == rhs.hasOptionalCord) && (!lhs.hasOptionalCord || lhs.optionalCord == rhs.optionalCord)
            fieldCheck = fieldCheck && (lhs.hasOptionalPublicImportMessage == rhs.hasOptionalPublicImportMessage) && (!lhs.hasOptionalPublicImportMessage || lhs.optionalPublicImportMessage == rhs.optionalPublicImportMessage)
            fieldCheck = fieldCheck && (lhs.hasOptionalLazyMessage == rhs.hasOptionalLazyMessage) && (!lhs.hasOptionalLazyMessage || lhs.optionalLazyMessage == rhs.optionalLazyMessage)
            fieldCheck = fieldCheck && (lhs.repeatedInt32 == rhs.repeatedInt32)
            fieldCheck = fieldCheck && (lhs.repeatedInt64 == rhs.repeatedInt64)
            fieldCheck = fieldCheck && (lhs.repeatedUint32 == rhs.repeatedUint32)
            fieldCheck = fieldCheck && (lhs.repeatedUint64 == rhs.repeatedUint64)
            fieldCheck = fieldCheck && (lhs.repeatedSint32 == rhs.repeatedSint32)
            fieldCheck = fieldCheck && (lhs.repeatedSint64 == rhs.repeatedSint64)
            fieldCheck = fieldCheck && (lhs.repeatedFixed32 == rhs.repeatedFixed32)
            fieldCheck = fieldCheck && (lhs.repeatedFixed64 == rhs.repeatedFixed64)
            fieldCheck = fieldCheck && (lhs.repeatedSfixed32 == rhs.repeatedSfixed32)
            fieldCheck = fieldCheck && (lhs.repeatedSfixed64 == rhs.repeatedSfixed64)
            fieldCheck = fieldCheck && (lhs.repeatedFloat == rhs.repeatedFloat)
            fieldCheck = fieldCheck && (lhs.repeatedDouble == rhs.repeatedDouble)
            fieldCheck = fieldCheck && (lhs.repeatedBool == rhs.repeatedBool)
            fieldCheck = fieldCheck && (lhs.repeatedString == rhs.repeatedString)
            fieldCheck = fieldCheck && (lhs.repeatedBytes == rhs.repeatedBytes)
            fieldCheck = fieldCheck && (lhs.repeatedGroup == rhs.repeatedGroup)
            fieldCheck = fieldCheck && (lhs.repeatedNestedMessage == rhs.repeatedNestedMessage)
            fieldCheck = fieldCheck && (lhs.repeatedForeignMessage == rhs.repeatedForeignMessage)
            fieldCheck = fieldCheck && (lhs.repeatedImportMessage == rhs.repeatedImportMessage)
            fieldCheck = fieldCheck && (lhs.repeatedNestedEnum == rhs.repeatedNestedEnum)
            fieldCheck = fieldCheck && (lhs.repeatedForeignEnum == rhs.repeatedForeignEnum)
            fieldCheck = fieldCheck && (lhs.repeatedImportEnum == rhs.repeatedImportEnum)
            fieldCheck = fieldCheck && (lhs.repeatedStringPiece == rhs.repeatedStringPiece)
            fieldCheck = fieldCheck && (lhs.repeatedCord == rhs.repeatedCord)
            fieldCheck = fieldCheck && (lhs.repeatedLazyMessage == rhs.repeatedLazyMessage)
            fieldCheck = fieldCheck && (lhs.hasDefaultInt32 == rhs.hasDefaultInt32) && (!lhs.hasDefaultInt32 || lhs.defaultInt32 == rhs.defaultInt32)
            fieldCheck = fieldCheck && (lhs.hasDefaultInt64 == rhs.hasDefaultInt64) && (!lhs.hasDefaultInt64 || lhs.defaultInt64 == rhs.defaultInt64)
            fieldCheck = fieldCheck && (lhs.hasDefaultUint32 == rhs.hasDefaultUint32) && (!lhs.hasDefaultUint32 || lhs.defaultUint32 == rhs.defaultUint32)
            fieldCheck = fieldCheck && (lhs.hasDefaultUint64 == rhs.hasDefaultUint64) && (!lhs.hasDefaultUint64 || lhs.defaultUint64 == rhs.defaultUint64)
            fieldCheck = fieldCheck && (lhs.hasDefaultSint32 == rhs.hasDefaultSint32) && (!lhs.hasDefaultSint32 || lhs.defaultSint32 == rhs.defaultSint32)
            fieldCheck = fieldCheck && (lhs.hasDefaultSint64 == rhs.hasDefaultSint64) && (!lhs.hasDefaultSint64 || lhs.defaultSint64 == rhs.defaultSint64)
            fieldCheck = fieldCheck && (lhs.hasDefaultFixed32 == rhs.hasDefaultFixed32) && (!lhs.hasDefaultFixed32 || lhs.defaultFixed32 == rhs.defaultFixed32)
            fieldCheck = fieldCheck && (lhs.hasDefaultFixed64 == rhs.hasDefaultFixed64) && (!lhs.hasDefaultFixed64 || lhs.defaultFixed64 == rhs.defaultFixed64)
            fieldCheck = fieldCheck && (lhs.hasDefaultSfixed32 == rhs.hasDefaultSfixed32) && (!lhs.hasDefaultSfixed32 || lhs.defaultSfixed32 == rhs.defaultSfixed32)
            fieldCheck = fieldCheck && (lhs.hasDefaultSfixed64 == rhs.hasDefaultSfixed64) && (!lhs.hasDefaultSfixed64 || lhs.defaultSfixed64 == rhs.defaultSfixed64)
            fieldCheck = fieldCheck && (lhs.hasDefaultFloat == rhs.hasDefaultFloat) && (!lhs.hasDefaultFloat || lhs.defaultFloat == rhs.defaultFloat)
            fieldCheck = fieldCheck && (lhs.hasDefaultDouble == rhs.hasDefaultDouble) && (!lhs.hasDefaultDouble || lhs.defaultDouble == rhs.defaultDouble)
            fieldCheck = fieldCheck && (lhs.hasDefaultBool == rhs.hasDefaultBool) && (!lhs.hasDefaultBool || lhs.defaultBool == rhs.defaultBool)
            fieldCheck = fieldCheck && (lhs.hasDefaultString == rhs.hasDefaultString) && (!lhs.hasDefaultString || lhs.defaultString == rhs.defaultString)
            fieldCheck = fieldCheck && (lhs.hasDefaultBytes == rhs.hasDefaultBytes) && (!lhs.hasDefaultBytes || lhs.defaultBytes == rhs.defaultBytes)
            fieldCheck = fieldCheck && (lhs.hasDefaultNestedEnum == rhs.hasDefaultNestedEnum) && (!lhs.hasDefaultNestedEnum || lhs.defaultNestedEnum == rhs.defaultNestedEnum)
            fieldCheck = fieldCheck && (lhs.hasDefaultForeignEnum == rhs.hasDefaultForeignEnum) && (!lhs.hasDefaultForeignEnum || lhs.defaultForeignEnum == rhs.defaultForeignEnum)
            fieldCheck = fieldCheck && (lhs.hasDefaultImportEnum == rhs.hasDefaultImportEnum) && (!lhs.hasDefaultImportEnum || lhs.defaultImportEnum == rhs.defaultImportEnum)
            fieldCheck = fieldCheck && (lhs.hasDefaultStringPiece == rhs.hasDefaultStringPiece) && (!lhs.hasDefaultStringPiece || lhs.defaultStringPiece == rhs.defaultStringPiece)
            fieldCheck = fieldCheck && (lhs.hasDefaultCord == rhs.hasDefaultCord) && (!lhs.hasDefaultCord || lhs.defaultCord == rhs.defaultCord)
            fieldCheck = fieldCheck && (lhs.hasOneofUint32 == rhs.hasOneofUint32) && (!lhs.hasOneofUint32 || lhs.oneofUint32 == rhs.oneofUint32)
            fieldCheck = fieldCheck && (lhs.hasOneofNestedMessage == rhs.hasOneofNestedMessage) && (!lhs.hasOneofNestedMessage || lhs.oneofNestedMessage == rhs.oneofNestedMessage)
            fieldCheck = fieldCheck && (lhs.hasOneofString == rhs.hasOneofString) && (!lhs.hasOneofString || lhs.oneofString == rhs.oneofString)
            fieldCheck = fieldCheck && (lhs.hasOneofBytes == rhs.hasOneofBytes) && (!lhs.hasOneofBytes || lhs.oneofBytes == rhs.oneofBytes)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }



        //Nested type declaration start

        final public class NestedMessage : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder

            public static func == (lhs: ProtobufUnittest.TestAllTypesLite.NestedMessage, rhs: ProtobufUnittest.TestAllTypesLite.NestedMessage) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.hasBb == rhs.hasBb) && (!lhs.hasBb || lhs.bb == rhs.bb)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }

            public fileprivate(set) var bb:Int32! = nil
            public fileprivate(set) var hasBb:Bool = false

            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                if hasBb {
                    try codedOutputStream.writeInt32(fieldNumber: 1, value:bb)
                }
                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 hasBb {
                    serialize_size += bb.computeInt32Size(fieldNumber: 1)
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                return ProtobufUnittest.TestAllTypesLite.NestedMessage.classBuilder() as! ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                return classBuilder() as! ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                return try ProtobufUnittest.TestAllTypesLite.NestedMessage.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestAllTypesLite.NestedMessage) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if hasBb {
                    jsonMap["bb"] = Int(bb)
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
                return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
                return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                if hasBb {
                    output += "\(indent) bb: \(String(describing: bb)) \n"
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasBb {
                        hashCode = (hashCode &* 31) &+ bb.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var bb:Int32 {
                    get {
                        return builderResult.bb
                    }
                    set (value) {
                        builderResult.hasBb = true
                        builderResult.bb = value
                    }
                }
                public var hasBb:Bool {
                    get {
                        return builderResult.hasBb
                    }
                }
                @discardableResult
                public func setBb(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                    self.bb = value
                    return self
                }
                @discardableResult
                public func clearBb() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder{
                    builderResult.hasBb = false
                    builderResult.bb = nil
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                    builderResult = ProtobufUnittest.TestAllTypesLite.NestedMessage()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                    return try ProtobufUnittest.TestAllTypesLite.NestedMessage.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
                    let returnMe:ProtobufUnittest.TestAllTypesLite.NestedMessage = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestAllTypesLite.NestedMessage) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                    if other == ProtobufUnittest.TestAllTypesLite.NestedMessage() {
                        return self
                    }
                    if other.hasBb {
                        bb = other.bb
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.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 8:
                            bb = try codedInputStream.readInt32()

                        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.TestAllTypesLite.NestedMessage.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                    if let jsonValueBb = jsonMap["bb"] as? Int {
                        resultDecodedBuilder.bb = Int32(jsonValueBb)
                    } else if let jsonValueBb = jsonMap["bb"] as? String {
                        resultDecodedBuilder.bb = Int32(jsonValueBb)!
                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage.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.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end



        //Nested type declaration start

        final public class OptionalGroup : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder

            public static func == (lhs: ProtobufUnittest.TestAllTypesLite.OptionalGroup, rhs: ProtobufUnittest.TestAllTypesLite.OptionalGroup) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.hasA == rhs.hasA) && (!lhs.hasA || lhs.a == rhs.a)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }

            public fileprivate(set) var a:Int32! = nil
            public fileprivate(set) var hasA:Bool = false

            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                if hasA {
                    try codedOutputStream.writeInt32(fieldNumber: 17, value:a)
                }
                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 hasA {
                    serialize_size += a.computeInt32Size(fieldNumber: 17)
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                return ProtobufUnittest.TestAllTypesLite.OptionalGroup.classBuilder() as! ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                return classBuilder() as! ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestAllTypesLite.OptionalGroup) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if hasA {
                    jsonMap["a"] = Int(a)
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
                return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
                return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                if hasA {
                    output += "\(indent) a: \(String(describing: a)) \n"
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasA {
                        hashCode = (hashCode &* 31) &+ a.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var a:Int32 {
                    get {
                        return builderResult.a
                    }
                    set (value) {
                        builderResult.hasA = true
                        builderResult.a = value
                    }
                }
                public var hasA:Bool {
                    get {
                        return builderResult.hasA
                    }
                }
                @discardableResult
                public func setA(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                    self.a = value
                    return self
                }
                @discardableResult
                public func clearA() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder{
                    builderResult.hasA = false
                    builderResult.a = nil
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                    builderResult = ProtobufUnittest.TestAllTypesLite.OptionalGroup()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                    return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
                    let returnMe:ProtobufUnittest.TestAllTypesLite.OptionalGroup = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestAllTypesLite.OptionalGroup) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                    if other == ProtobufUnittest.TestAllTypesLite.OptionalGroup() {
                        return self
                    }
                    if other.hasA {
                        a = other.a
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.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 136:
                            a = try codedInputStream.readInt32()

                        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.TestAllTypesLite.OptionalGroup.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder()
                    if let jsonValueA = jsonMap["a"] as? Int {
                        resultDecodedBuilder.a = Int32(jsonValueA)
                    } else if let jsonValueA = jsonMap["a"] as? String {
                        resultDecodedBuilder.a = Int32(jsonValueA)!
                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.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.TestAllTypesLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end



        //Nested type declaration start

        final public class RepeatedGroup : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder

            public static func == (lhs: ProtobufUnittest.TestAllTypesLite.RepeatedGroup, rhs: ProtobufUnittest.TestAllTypesLite.RepeatedGroup) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.hasA == rhs.hasA) && (!lhs.hasA || lhs.a == rhs.a)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }

            public fileprivate(set) var a:Int32! = nil
            public fileprivate(set) var hasA:Bool = false

            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                if hasA {
                    try codedOutputStream.writeInt32(fieldNumber: 47, value:a)
                }
                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 hasA {
                    serialize_size += a.computeInt32Size(fieldNumber: 47)
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                return ProtobufUnittest.TestAllTypesLite.RepeatedGroup.classBuilder() as! ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                return classBuilder() as! ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestAllTypesLite.RepeatedGroup) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if hasA {
                    jsonMap["a"] = Int(a)
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
                return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
                return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                if hasA {
                    output += "\(indent) a: \(String(describing: a)) \n"
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasA {
                        hashCode = (hashCode &* 31) &+ a.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var a:Int32 {
                    get {
                        return builderResult.a
                    }
                    set (value) {
                        builderResult.hasA = true
                        builderResult.a = value
                    }
                }
                public var hasA:Bool {
                    get {
                        return builderResult.hasA
                    }
                }
                @discardableResult
                public func setA(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                    self.a = value
                    return self
                }
                @discardableResult
                public func clearA() -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder{
                    builderResult.hasA = false
                    builderResult.a = nil
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                    builderResult = ProtobufUnittest.TestAllTypesLite.RepeatedGroup()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                    return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
                    let returnMe:ProtobufUnittest.TestAllTypesLite.RepeatedGroup = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestAllTypesLite.RepeatedGroup) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                    if other == ProtobufUnittest.TestAllTypesLite.RepeatedGroup() {
                        return self
                    }
                    if other.hasA {
                        a = other.a
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.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 376:
                            a = try codedInputStream.readInt32()

                        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.TestAllTypesLite.RepeatedGroup.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder()
                    if let jsonValueA = jsonMap["a"] as? Int {
                        resultDecodedBuilder.a = Int32(jsonValueA)
                    } else if let jsonValueA = jsonMap["a"] as? String {
                        resultDecodedBuilder.a = Int32(jsonValueA)!
                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup.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.TestAllTypesLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end



        //OneOf declaration start

        /// For oneof test
        public enum OneofField {
            case oneOfOneofFieldNotSet

            public func checkOneOfIsSet() -> Bool {
                switch self {
                case .oneOfOneofFieldNotSet: return false
                default: return true
                }
            }
            case oneofUint32(UInt32)

            public static func getOneofUint32(_ value:OneofField) -> UInt32? {
                switch value {
                case .oneofUint32(let otherValue): return otherValue
                default: return nil
                }
            }
            public func getOneofUint32() -> UInt32? {
                switch self {
                case .oneofUint32(let otherValue): return otherValue
                default: return nil
                }
            }
            case oneofNestedMessage(ProtobufUnittest.TestAllTypesLite.NestedMessage)

            public static func getOneofNestedMessage(_ value:OneofField) -> ProtobufUnittest.TestAllTypesLite.NestedMessage? {
                switch value {
                case .oneofNestedMessage(let messageValue): return messageValue
                default: return nil
                }
            }
            public func getOneofNestedMessage() -> ProtobufUnittest.TestAllTypesLite.NestedMessage? {
                switch self {
                case .oneofNestedMessage(let messageValue): return messageValue
                default: return nil
                }
            }
            case oneofString(String)

            public static func getOneofString(_ value:OneofField) -> String? {
                switch value {
                case .oneofString(let otherValue): return otherValue
                default: return nil
                }
            }
            public func getOneofString() -> String? {
                switch self {
                case .oneofString(let otherValue): return otherValue
                default: return nil
                }
            }
            case oneofBytes(Data)

            public static func getOneofBytes(_ value:OneofField) -> Data? {
                switch value {
                case .oneofBytes(let otherValue): return otherValue
                default: return nil
                }
            }
            public func getOneofBytes() -> Data? {
                switch self {
                case .oneofBytes(let otherValue): return otherValue
                default: return nil
                }
            }
        }
        //OneOf declaration end

        fileprivate var storageOneofField:TestAllTypesLite.OneofField =  TestAllTypesLite.OneofField.oneOfOneofFieldNotSet
        public func getOneOfOneofField() ->  TestAllTypesLite.OneofField {
            let copyObjectOneofField = storageOneofField
            return copyObjectOneofField
        }


            //Enum type declaration start 

            public enum NestedEnum:Int32, GeneratedEnum {
                case foo = 1
                case bar = 2
                case baz = 3
                public func toString() -> String {
                    switch self {
                    case .foo: return "FOO"
                    case .bar: return "BAR"
                    case .baz: return "BAZ"
                    }
                }
                public static func fromString(_ str:String) throws -> ProtobufUnittest.TestAllTypesLite.NestedEnum {
                    switch str {
                    case "FOO":    return .foo
                    case "BAR":    return .bar
                    case "BAZ":    return .baz
                    default: throw ProtocolBuffersError.invalidProtocolBuffer("Conversion failed.")
                    }
                }
                public var debugDescription:String { return getDescription() }
                public var description:String { return getDescription() }
                private func getDescription() -> String { 
                    switch self {
                    case .foo: return ".foo"
                    case .bar: return ".bar"
                    case .baz: return ".baz"
                    }
                }
                public var hashValue:Int {
                    return self.rawValue.hashValue
                }
                public static func ==(lhs:NestedEnum, rhs:NestedEnum) -> Bool {
                    return lhs.hashValue == rhs.hashValue
                }
            }

            //Enum type declaration end 

        /// Singular
        public fileprivate(set) var optionalInt32:Int32! = nil
        public fileprivate(set) var hasOptionalInt32:Bool = false

        public fileprivate(set) var optionalInt64:Int64! = nil
        public fileprivate(set) var hasOptionalInt64:Bool = false

        public fileprivate(set) var optionalUint32:UInt32! = nil
        public fileprivate(set) var hasOptionalUint32:Bool = false

        public fileprivate(set) var optionalUint64:UInt64! = nil
        public fileprivate(set) var hasOptionalUint64:Bool = false

        public fileprivate(set) var optionalSint32:Int32! = nil
        public fileprivate(set) var hasOptionalSint32:Bool = false

        public fileprivate(set) var optionalSint64:Int64! = nil
        public fileprivate(set) var hasOptionalSint64:Bool = false

        public fileprivate(set) var optionalFixed32:UInt32! = nil
        public fileprivate(set) var hasOptionalFixed32:Bool = false

        public fileprivate(set) var optionalFixed64:UInt64! = nil
        public fileprivate(set) var hasOptionalFixed64:Bool = false

        public fileprivate(set) var optionalSfixed32:Int32! = nil
        public fileprivate(set) var hasOptionalSfixed32:Bool = false

        public fileprivate(set) var optionalSfixed64:Int64! = nil
        public fileprivate(set) var hasOptionalSfixed64:Bool = false

        public fileprivate(set) var optionalFloat:Float! = nil
        public fileprivate(set) var hasOptionalFloat:Bool = false

        public fileprivate(set) var optionalDouble:Double! = nil
        public fileprivate(set) var hasOptionalDouble:Bool = false

        public fileprivate(set) var optionalBool:Bool! = nil
        public fileprivate(set) var hasOptionalBool:Bool = false

        public fileprivate(set) var optionalString:String! = nil
        public fileprivate(set) var hasOptionalString:Bool = false

        public fileprivate(set) var optionalBytes:Data! = nil
        public fileprivate(set) var hasOptionalBytes:Bool = false

        public fileprivate(set) var optionalGroup:ProtobufUnittest.TestAllTypesLite.OptionalGroup!
        public fileprivate(set) var hasOptionalGroup:Bool = false
        public fileprivate(set) var optionalNestedMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage!
        public fileprivate(set) var hasOptionalNestedMessage:Bool = false
        public fileprivate(set) var optionalForeignMessage:ProtobufUnittest.ForeignMessageLite!
        public fileprivate(set) var hasOptionalForeignMessage:Bool = false
        public fileprivate(set) var optionalImportMessage:ProtobufUnittestImport.ImportMessageLite!
        public fileprivate(set) var hasOptionalImportMessage:Bool = false
        public fileprivate(set) var optionalNestedEnum:ProtobufUnittest.TestAllTypesLite.NestedEnum = ProtobufUnittest.TestAllTypesLite.NestedEnum.foo
        public fileprivate(set) var hasOptionalNestedEnum:Bool = false
        public fileprivate(set) var optionalForeignEnum:ProtobufUnittest.ForeignEnumLite = ProtobufUnittest.ForeignEnumLite.foreignLiteFoo
        public fileprivate(set) var hasOptionalForeignEnum:Bool = false
        public fileprivate(set) var optionalImportEnum:ProtobufUnittestImport.ImportEnumLite = ProtobufUnittestImport.ImportEnumLite.importLiteFoo
        public fileprivate(set) var hasOptionalImportEnum:Bool = false
        public fileprivate(set) var optionalStringPiece:String! = nil
        public fileprivate(set) var hasOptionalStringPiece:Bool = false

        public fileprivate(set) var optionalCord:String! = nil
        public fileprivate(set) var hasOptionalCord:Bool = false

        public fileprivate(set) var optionalPublicImportMessage:ProtobufUnittestImport.PublicImportMessageLite!
        public fileprivate(set) var hasOptionalPublicImportMessage:Bool = false
        public fileprivate(set) var optionalLazyMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage!
        public fileprivate(set) var hasOptionalLazyMessage:Bool = false
        /// Repeated
        public fileprivate(set) var repeatedInt32:Array<Int32> = Array<Int32>()
        public fileprivate(set) var repeatedInt64:Array<Int64> = Array<Int64>()
        public fileprivate(set) var repeatedUint32:Array<UInt32> = Array<UInt32>()
        public fileprivate(set) var repeatedUint64:Array<UInt64> = Array<UInt64>()
        public fileprivate(set) var repeatedSint32:Array<Int32> = Array<Int32>()
        public fileprivate(set) var repeatedSint64:Array<Int64> = Array<Int64>()
        public fileprivate(set) var repeatedFixed32:Array<UInt32> = Array<UInt32>()
        public fileprivate(set) var repeatedFixed64:Array<UInt64> = Array<UInt64>()
        public fileprivate(set) var repeatedSfixed32:Array<Int32> = Array<Int32>()
        public fileprivate(set) var repeatedSfixed64:Array<Int64> = Array<Int64>()
        public fileprivate(set) var repeatedFloat:Array<Float> = Array<Float>()
        public fileprivate(set) var repeatedDouble:Array<Double> = Array<Double>()
        public fileprivate(set) var repeatedBool:Array<Bool> = Array<Bool>()
        public fileprivate(set) var repeatedString:Array<String> = Array<String>()
        public fileprivate(set) var repeatedBytes:Array<Data> = Array<Data>()
        public fileprivate(set) var repeatedGroup:Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup>  = Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup>()
        public fileprivate(set) var repeatedNestedMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>  = Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>()
        public fileprivate(set) var repeatedForeignMessage:Array<ProtobufUnittest.ForeignMessageLite>  = Array<ProtobufUnittest.ForeignMessageLite>()
        public fileprivate(set) var repeatedImportMessage:Array<ProtobufUnittestImport.ImportMessageLite>  = Array<ProtobufUnittestImport.ImportMessageLite>()
        private var repeatedNestedEnumMemoizedSerializedSize:Int32 = 0
        public fileprivate(set) var repeatedNestedEnum:Array<ProtobufUnittest.TestAllTypesLite.NestedEnum> = Array<ProtobufUnittest.TestAllTypesLite.NestedEnum>()
        private var repeatedForeignEnumMemoizedSerializedSize:Int32 = 0
        public fileprivate(set) var repeatedForeignEnum:Array<ProtobufUnittest.ForeignEnumLite> = Array<ProtobufUnittest.ForeignEnumLite>()
        private var repeatedImportEnumMemoizedSerializedSize:Int32 = 0
        public fileprivate(set) var repeatedImportEnum:Array<ProtobufUnittestImport.ImportEnumLite> = Array<ProtobufUnittestImport.ImportEnumLite>()
        public fileprivate(set) var repeatedStringPiece:Array<String> = Array<String>()
        public fileprivate(set) var repeatedCord:Array<String> = Array<String>()
        public fileprivate(set) var repeatedLazyMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>  = Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>()
        /// Singular with defaults
        public fileprivate(set) var defaultInt32:Int32! = Int32(41)
        public fileprivate(set) var hasDefaultInt32:Bool = false

        public fileprivate(set) var defaultInt64:Int64! = Int64(42)
        public fileprivate(set) var hasDefaultInt64:Bool = false

        public fileprivate(set) var defaultUint32:UInt32! = UInt32(43)
        public fileprivate(set) var hasDefaultUint32:Bool = false

        public fileprivate(set) var defaultUint64:UInt64! = UInt64(44)
        public fileprivate(set) var hasDefaultUint64:Bool = false

        public fileprivate(set) var defaultSint32:Int32! = Int32(-45)
        public fileprivate(set) var hasDefaultSint32:Bool = false

        public fileprivate(set) var defaultSint64:Int64! = Int64(46)
        public fileprivate(set) var hasDefaultSint64:Bool = false

        public fileprivate(set) var defaultFixed32:UInt32! = UInt32(47)
        public fileprivate(set) var hasDefaultFixed32:Bool = false

        public fileprivate(set) var defaultFixed64:UInt64! = UInt64(48)
        public fileprivate(set) var hasDefaultFixed64:Bool = false

        public fileprivate(set) var defaultSfixed32:Int32! = Int32(49)
        public fileprivate(set) var hasDefaultSfixed32:Bool = false

        public fileprivate(set) var defaultSfixed64:Int64! = Int64(-50)
        public fileprivate(set) var hasDefaultSfixed64:Bool = false

        public fileprivate(set) var defaultFloat:Float! = Float(51.5)
        public fileprivate(set) var hasDefaultFloat:Bool = false

        public fileprivate(set) var defaultDouble:Double! = Double(52000)
        public fileprivate(set) var hasDefaultDouble:Bool = false

        public fileprivate(set) var defaultBool:Bool! = true
        public fileprivate(set) var hasDefaultBool:Bool = false

        public fileprivate(set) var defaultString:String! = "hello"
        public fileprivate(set) var hasDefaultString:Bool = false

        public fileprivate(set) var defaultBytes:Data! = Data(bytes:([UInt8]() + "world".utf8), count:5)
        public fileprivate(set) var hasDefaultBytes:Bool = false

        public fileprivate(set) var defaultNestedEnum:ProtobufUnittest.TestAllTypesLite.NestedEnum = ProtobufUnittest.TestAllTypesLite.NestedEnum.bar
        public fileprivate(set) var hasDefaultNestedEnum:Bool = false
        public fileprivate(set) var defaultForeignEnum:ProtobufUnittest.ForeignEnumLite = ProtobufUnittest.ForeignEnumLite.foreignLiteBar
        public fileprivate(set) var hasDefaultForeignEnum:Bool = false
        public fileprivate(set) var defaultImportEnum:ProtobufUnittestImport.ImportEnumLite = ProtobufUnittestImport.ImportEnumLite.importLiteBar
        public fileprivate(set) var hasDefaultImportEnum:Bool = false
        public fileprivate(set) var defaultStringPiece:String! = "abc"
        public fileprivate(set) var hasDefaultStringPiece:Bool = false

        public fileprivate(set) var defaultCord:String! = "123"
        public fileprivate(set) var hasDefaultCord:Bool = false

        public fileprivate(set) var oneofUint32:UInt32!{
            get {
                return TestAllTypesLite.OneofField.getOneofUint32(storageOneofField)
            }
            set (newvalue) {
                storageOneofField = TestAllTypesLite.OneofField.oneofUint32(newvalue)
            }
        }
        public fileprivate(set) var hasOneofUint32:Bool {
            get {
                return TestAllTypesLite.OneofField.getOneofUint32(storageOneofField) != nil
            }
            set(newValue) {
            }
        }
        public fileprivate(set) var oneofNestedMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage!{
            get {
                return TestAllTypesLite.OneofField.getOneofNestedMessage(storageOneofField)
            }
            set (newvalue) {
                storageOneofField = TestAllTypesLite.OneofField.oneofNestedMessage(newvalue)
            }
        }
        public fileprivate(set) var hasOneofNestedMessage:Bool {
            get {
                return TestAllTypesLite.OneofField.getOneofNestedMessage(storageOneofField) != nil
            }
            set(newValue) {
            }
        }
        public fileprivate(set) var oneofString:String!{
            get {
                return TestAllTypesLite.OneofField.getOneofString(storageOneofField)
            }
            set (newvalue) {
                storageOneofField = TestAllTypesLite.OneofField.oneofString(newvalue)
            }
        }
        public fileprivate(set) var hasOneofString:Bool {
            get {
                return TestAllTypesLite.OneofField.getOneofString(storageOneofField) != nil
            }
            set(newValue) {
            }
        }
        public fileprivate(set) var oneofBytes:Data!{
            get {
                return TestAllTypesLite.OneofField.getOneofBytes(storageOneofField)
            }
            set (newvalue) {
                storageOneofField = TestAllTypesLite.OneofField.oneofBytes(newvalue)
            }
        }
        public fileprivate(set) var hasOneofBytes:Bool {
            get {
                return TestAllTypesLite.OneofField.getOneofBytes(storageOneofField) != nil
            }
            set(newValue) {
            }
        }
        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasOptionalInt32 {
                try codedOutputStream.writeInt32(fieldNumber: 1, value:optionalInt32)
            }
            if hasOptionalInt64 {
                try codedOutputStream.writeInt64(fieldNumber: 2, value:optionalInt64)
            }
            if hasOptionalUint32 {
                try codedOutputStream.writeUInt32(fieldNumber: 3, value:optionalUint32)
            }
            if hasOptionalUint64 {
                try codedOutputStream.writeUInt64(fieldNumber: 4, value:optionalUint64)
            }
            if hasOptionalSint32 {
                try codedOutputStream.writeSInt32(fieldNumber: 5, value:optionalSint32)
            }
            if hasOptionalSint64 {
                try codedOutputStream.writeSInt64(fieldNumber: 6, value:optionalSint64)
            }
            if hasOptionalFixed32 {
                try codedOutputStream.writeFixed32(fieldNumber: 7, value:optionalFixed32)
            }
            if hasOptionalFixed64 {
                try codedOutputStream.writeFixed64(fieldNumber: 8, value:optionalFixed64)
            }
            if hasOptionalSfixed32 {
                try codedOutputStream.writeSFixed32(fieldNumber: 9, value:optionalSfixed32)
            }
            if hasOptionalSfixed64 {
                try codedOutputStream.writeSFixed64(fieldNumber: 10, value:optionalSfixed64)
            }
            if hasOptionalFloat {
                try codedOutputStream.writeFloat(fieldNumber: 11, value:optionalFloat)
            }
            if hasOptionalDouble {
                try codedOutputStream.writeDouble(fieldNumber: 12, value:optionalDouble)
            }
            if hasOptionalBool {
                try codedOutputStream.writeBool(fieldNumber: 13, value:optionalBool)
            }
            if hasOptionalString {
                try codedOutputStream.writeString(fieldNumber: 14, value:optionalString)
            }
            if hasOptionalBytes {
                try codedOutputStream.writeData(fieldNumber: 15, value:optionalBytes)
            }
            if hasOptionalGroup {
                try codedOutputStream.writeGroup(fieldNumber: 16, value:optionalGroup)
            }
            if hasOptionalNestedMessage {
                try codedOutputStream.writeMessage(fieldNumber: 18, value:optionalNestedMessage)
            }
            if hasOptionalForeignMessage {
                try codedOutputStream.writeMessage(fieldNumber: 19, value:optionalForeignMessage)
            }
            if hasOptionalImportMessage {
                try codedOutputStream.writeMessage(fieldNumber: 20, value:optionalImportMessage)
            }
            if hasOptionalNestedEnum {
                try codedOutputStream.writeEnum(fieldNumber: 21, value:optionalNestedEnum.rawValue)
            }
            if hasOptionalForeignEnum {
                try codedOutputStream.writeEnum(fieldNumber: 22, value:optionalForeignEnum.rawValue)
            }
            if hasOptionalImportEnum {
                try codedOutputStream.writeEnum(fieldNumber: 23, value:optionalImportEnum.rawValue)
            }
            if hasOptionalStringPiece {
                try codedOutputStream.writeString(fieldNumber: 24, value:optionalStringPiece)
            }
            if hasOptionalCord {
                try codedOutputStream.writeString(fieldNumber: 25, value:optionalCord)
            }
            if hasOptionalPublicImportMessage {
                try codedOutputStream.writeMessage(fieldNumber: 26, value:optionalPublicImportMessage)
            }
            if hasOptionalLazyMessage {
                try codedOutputStream.writeMessage(fieldNumber: 27, value:optionalLazyMessage)
            }
            if !repeatedInt32.isEmpty {
                for oneValuerepeatedInt32 in repeatedInt32 {
                    try codedOutputStream.writeInt32(fieldNumber: 31, value:oneValuerepeatedInt32)
                }
            }
            if !repeatedInt64.isEmpty {
                for oneValuerepeatedInt64 in repeatedInt64 {
                    try codedOutputStream.writeInt64(fieldNumber: 32, value:oneValuerepeatedInt64)
                }
            }
            if !repeatedUint32.isEmpty {
                for oneValuerepeatedUint32 in repeatedUint32 {
                    try codedOutputStream.writeUInt32(fieldNumber: 33, value:oneValuerepeatedUint32)
                }
            }
            if !repeatedUint64.isEmpty {
                for oneValuerepeatedUint64 in repeatedUint64 {
                    try codedOutputStream.writeUInt64(fieldNumber: 34, value:oneValuerepeatedUint64)
                }
            }
            if !repeatedSint32.isEmpty {
                for oneValuerepeatedSint32 in repeatedSint32 {
                    try codedOutputStream.writeSInt32(fieldNumber: 35, value:oneValuerepeatedSint32)
                }
            }
            if !repeatedSint64.isEmpty {
                for oneValuerepeatedSint64 in repeatedSint64 {
                    try codedOutputStream.writeSInt64(fieldNumber: 36, value:oneValuerepeatedSint64)
                }
            }
            if !repeatedFixed32.isEmpty {
                for oneValuerepeatedFixed32 in repeatedFixed32 {
                    try codedOutputStream.writeFixed32(fieldNumber: 37, value:oneValuerepeatedFixed32)
                }
            }
            if !repeatedFixed64.isEmpty {
                for oneValuerepeatedFixed64 in repeatedFixed64 {
                    try codedOutputStream.writeFixed64(fieldNumber: 38, value:oneValuerepeatedFixed64)
                }
            }
            if !repeatedSfixed32.isEmpty {
                for oneValuerepeatedSfixed32 in repeatedSfixed32 {
                    try codedOutputStream.writeSFixed32(fieldNumber: 39, value:oneValuerepeatedSfixed32)
                }
            }
            if !repeatedSfixed64.isEmpty {
                for oneValuerepeatedSfixed64 in repeatedSfixed64 {
                    try codedOutputStream.writeSFixed64(fieldNumber: 40, value:oneValuerepeatedSfixed64)
                }
            }
            if !repeatedFloat.isEmpty {
                for oneValuerepeatedFloat in repeatedFloat {
                    try codedOutputStream.writeFloat(fieldNumber: 41, value:oneValuerepeatedFloat)
                }
            }
            if !repeatedDouble.isEmpty {
                for oneValuerepeatedDouble in repeatedDouble {
                    try codedOutputStream.writeDouble(fieldNumber: 42, value:oneValuerepeatedDouble)
                }
            }
            if !repeatedBool.isEmpty {
                for oneValuerepeatedBool in repeatedBool {
                    try codedOutputStream.writeBool(fieldNumber: 43, value:oneValuerepeatedBool)
                }
            }
            if !repeatedString.isEmpty {
                for oneValuerepeatedString in repeatedString {
                    try codedOutputStream.writeString(fieldNumber: 44, value:oneValuerepeatedString)
                }
            }
            if !repeatedBytes.isEmpty {
                for oneValuerepeatedBytes in repeatedBytes {
                    try codedOutputStream.writeData(fieldNumber: 45, value:oneValuerepeatedBytes)
                }
            }
            for oneElementRepeatedGroup in repeatedGroup {
                  try codedOutputStream.writeGroup(fieldNumber: 46, value:oneElementRepeatedGroup)
            }
            for oneElementRepeatedNestedMessage in repeatedNestedMessage {
                  try codedOutputStream.writeMessage(fieldNumber: 48, value:oneElementRepeatedNestedMessage)
            }
            for oneElementRepeatedForeignMessage in repeatedForeignMessage {
                  try codedOutputStream.writeMessage(fieldNumber: 49, value:oneElementRepeatedForeignMessage)
            }
            for oneElementRepeatedImportMessage in repeatedImportMessage {
                  try codedOutputStream.writeMessage(fieldNumber: 50, value:oneElementRepeatedImportMessage)
            }
            for oneValueOfrepeatedNestedEnum in repeatedNestedEnum {
                  try codedOutputStream.writeEnum(fieldNumber: 51, value:oneValueOfrepeatedNestedEnum.rawValue)
            }
            for oneValueOfrepeatedForeignEnum in repeatedForeignEnum {
                  try codedOutputStream.writeEnum(fieldNumber: 52, value:oneValueOfrepeatedForeignEnum.rawValue)
            }
            for oneValueOfrepeatedImportEnum in repeatedImportEnum {
                  try codedOutputStream.writeEnum(fieldNumber: 53, value:oneValueOfrepeatedImportEnum.rawValue)
            }
            if !repeatedStringPiece.isEmpty {
                for oneValuerepeatedStringPiece in repeatedStringPiece {
                    try codedOutputStream.writeString(fieldNumber: 54, value:oneValuerepeatedStringPiece)
                }
            }
            if !repeatedCord.isEmpty {
                for oneValuerepeatedCord in repeatedCord {
                    try codedOutputStream.writeString(fieldNumber: 55, value:oneValuerepeatedCord)
                }
            }
            for oneElementRepeatedLazyMessage in repeatedLazyMessage {
                  try codedOutputStream.writeMessage(fieldNumber: 57, value:oneElementRepeatedLazyMessage)
            }
            if hasDefaultInt32 {
                try codedOutputStream.writeInt32(fieldNumber: 61, value:defaultInt32)
            }
            if hasDefaultInt64 {
                try codedOutputStream.writeInt64(fieldNumber: 62, value:defaultInt64)
            }
            if hasDefaultUint32 {
                try codedOutputStream.writeUInt32(fieldNumber: 63, value:defaultUint32)
            }
            if hasDefaultUint64 {
                try codedOutputStream.writeUInt64(fieldNumber: 64, value:defaultUint64)
            }
            if hasDefaultSint32 {
                try codedOutputStream.writeSInt32(fieldNumber: 65, value:defaultSint32)
            }
            if hasDefaultSint64 {
                try codedOutputStream.writeSInt64(fieldNumber: 66, value:defaultSint64)
            }
            if hasDefaultFixed32 {
                try codedOutputStream.writeFixed32(fieldNumber: 67, value:defaultFixed32)
            }
            if hasDefaultFixed64 {
                try codedOutputStream.writeFixed64(fieldNumber: 68, value:defaultFixed64)
            }
            if hasDefaultSfixed32 {
                try codedOutputStream.writeSFixed32(fieldNumber: 69, value:defaultSfixed32)
            }
            if hasDefaultSfixed64 {
                try codedOutputStream.writeSFixed64(fieldNumber: 70, value:defaultSfixed64)
            }
            if hasDefaultFloat {
                try codedOutputStream.writeFloat(fieldNumber: 71, value:defaultFloat)
            }
            if hasDefaultDouble {
                try codedOutputStream.writeDouble(fieldNumber: 72, value:defaultDouble)
            }
            if hasDefaultBool {
                try codedOutputStream.writeBool(fieldNumber: 73, value:defaultBool)
            }
            if hasDefaultString {
                try codedOutputStream.writeString(fieldNumber: 74, value:defaultString)
            }
            if hasDefaultBytes {
                try codedOutputStream.writeData(fieldNumber: 75, value:defaultBytes)
            }
            if hasDefaultNestedEnum {
                try codedOutputStream.writeEnum(fieldNumber: 81, value:defaultNestedEnum.rawValue)
            }
            if hasDefaultForeignEnum {
                try codedOutputStream.writeEnum(fieldNumber: 82, value:defaultForeignEnum.rawValue)
            }
            if hasDefaultImportEnum {
                try codedOutputStream.writeEnum(fieldNumber: 83, value:defaultImportEnum.rawValue)
            }
            if hasDefaultStringPiece {
                try codedOutputStream.writeString(fieldNumber: 84, value:defaultStringPiece)
            }
            if hasDefaultCord {
                try codedOutputStream.writeString(fieldNumber: 85, value:defaultCord)
            }
            if hasOneofUint32 {
                try codedOutputStream.writeUInt32(fieldNumber: 111, value:oneofUint32)
            }
            if hasOneofNestedMessage {
                try codedOutputStream.writeMessage(fieldNumber: 112, value:oneofNestedMessage)
            }
            if hasOneofString {
                try codedOutputStream.writeString(fieldNumber: 113, value:oneofString)
            }
            if hasOneofBytes {
                try codedOutputStream.writeData(fieldNumber: 114, value:oneofBytes)
            }
            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 hasOptionalInt32 {
                serialize_size += optionalInt32.computeInt32Size(fieldNumber: 1)
            }
            if hasOptionalInt64 {
                serialize_size += optionalInt64.computeInt64Size(fieldNumber: 2)
            }
            if hasOptionalUint32 {
                serialize_size += optionalUint32.computeUInt32Size(fieldNumber: 3)
            }
            if hasOptionalUint64 {
                serialize_size += optionalUint64.computeUInt64Size(fieldNumber: 4)
            }
            if hasOptionalSint32 {
                serialize_size += optionalSint32.computeSInt32Size(fieldNumber: 5)
            }
            if hasOptionalSint64 {
                serialize_size += optionalSint64.computeSInt64Size(fieldNumber: 6)
            }
            if hasOptionalFixed32 {
                serialize_size += optionalFixed32.computeFixed32Size(fieldNumber: 7)
            }
            if hasOptionalFixed64 {
                serialize_size += optionalFixed64.computeFixed64Size(fieldNumber: 8)
            }
            if hasOptionalSfixed32 {
                serialize_size += optionalSfixed32.computeSFixed32Size(fieldNumber: 9)
            }
            if hasOptionalSfixed64 {
                serialize_size += optionalSfixed64.computeSFixed64Size(fieldNumber: 10)
            }
            if hasOptionalFloat {
                serialize_size += optionalFloat.computeFloatSize(fieldNumber: 11)
            }
            if hasOptionalDouble {
                serialize_size += optionalDouble.computeDoubleSize(fieldNumber: 12)
            }
            if hasOptionalBool {
                serialize_size += optionalBool.computeBoolSize(fieldNumber: 13)
            }
            if hasOptionalString {
                serialize_size += optionalString.computeStringSize(fieldNumber: 14)
            }
            if hasOptionalBytes {
                serialize_size += optionalBytes.computeDataSize(fieldNumber: 15)
            }
            if hasOptionalGroup {
                if let varSizeoptionalGroup = optionalGroup?.computeGroupSize(fieldNumber: 16) {
                    serialize_size += varSizeoptionalGroup
                }
            }
            if hasOptionalNestedMessage {
                if let varSizeoptionalNestedMessage = optionalNestedMessage?.computeMessageSize(fieldNumber: 18) {
                    serialize_size += varSizeoptionalNestedMessage
                }
            }
            if hasOptionalForeignMessage {
                if let varSizeoptionalForeignMessage = optionalForeignMessage?.computeMessageSize(fieldNumber: 19) {
                    serialize_size += varSizeoptionalForeignMessage
                }
            }
            if hasOptionalImportMessage {
                if let varSizeoptionalImportMessage = optionalImportMessage?.computeMessageSize(fieldNumber: 20) {
                    serialize_size += varSizeoptionalImportMessage
                }
            }
            if (hasOptionalNestedEnum) {
                serialize_size += optionalNestedEnum.rawValue.computeEnumSize(fieldNumber: 21)
            }
            if (hasOptionalForeignEnum) {
                serialize_size += optionalForeignEnum.rawValue.computeEnumSize(fieldNumber: 22)
            }
            if (hasOptionalImportEnum) {
                serialize_size += optionalImportEnum.rawValue.computeEnumSize(fieldNumber: 23)
            }
            if hasOptionalStringPiece {
                serialize_size += optionalStringPiece.computeStringSize(fieldNumber: 24)
            }
            if hasOptionalCord {
                serialize_size += optionalCord.computeStringSize(fieldNumber: 25)
            }
            if hasOptionalPublicImportMessage {
                if let varSizeoptionalPublicImportMessage = optionalPublicImportMessage?.computeMessageSize(fieldNumber: 26) {
                    serialize_size += varSizeoptionalPublicImportMessage
                }
            }
            if hasOptionalLazyMessage {
                if let varSizeoptionalLazyMessage = optionalLazyMessage?.computeMessageSize(fieldNumber: 27) {
                    serialize_size += varSizeoptionalLazyMessage
                }
            }
            var dataSizeRepeatedInt32:Int32 = 0
            for oneValuerepeatedInt32 in repeatedInt32 {
                dataSizeRepeatedInt32 += oneValuerepeatedInt32.computeInt32SizeNoTag()
            }
            serialize_size += dataSizeRepeatedInt32
            serialize_size += 2 * Int32(repeatedInt32.count)
            var dataSizeRepeatedInt64:Int32 = 0
            for oneValuerepeatedInt64 in repeatedInt64 {
                dataSizeRepeatedInt64 += oneValuerepeatedInt64.computeInt64SizeNoTag()
            }
            serialize_size += dataSizeRepeatedInt64
            serialize_size += 2 * Int32(repeatedInt64.count)
            var dataSizeRepeatedUint32:Int32 = 0
            for oneValuerepeatedUint32 in repeatedUint32 {
                dataSizeRepeatedUint32 += oneValuerepeatedUint32.computeUInt32SizeNoTag()
            }
            serialize_size += dataSizeRepeatedUint32
            serialize_size += 2 * Int32(repeatedUint32.count)
            var dataSizeRepeatedUint64:Int32 = 0
            for oneValuerepeatedUint64 in repeatedUint64 {
                dataSizeRepeatedUint64 += oneValuerepeatedUint64.computeUInt64SizeNoTag()
            }
            serialize_size += dataSizeRepeatedUint64
            serialize_size += 2 * Int32(repeatedUint64.count)
            var dataSizeRepeatedSint32:Int32 = 0
            for oneValuerepeatedSint32 in repeatedSint32 {
                dataSizeRepeatedSint32 += oneValuerepeatedSint32.computeSInt32SizeNoTag()
            }
            serialize_size += dataSizeRepeatedSint32
            serialize_size += 2 * Int32(repeatedSint32.count)
            var dataSizeRepeatedSint64:Int32 = 0
            for oneValuerepeatedSint64 in repeatedSint64 {
                dataSizeRepeatedSint64 += oneValuerepeatedSint64.computeSInt64SizeNoTag()
            }
            serialize_size += dataSizeRepeatedSint64
            serialize_size += 2 * Int32(repeatedSint64.count)
            var dataSizeRepeatedFixed32:Int32 = 0
            dataSizeRepeatedFixed32 = 4 * Int32(repeatedFixed32.count)
            serialize_size += dataSizeRepeatedFixed32
            serialize_size += 2 * Int32(repeatedFixed32.count)
            var dataSizeRepeatedFixed64:Int32 = 0
            dataSizeRepeatedFixed64 = 8 * Int32(repeatedFixed64.count)
            serialize_size += dataSizeRepeatedFixed64
            serialize_size += 2 * Int32(repeatedFixed64.count)
            var dataSizeRepeatedSfixed32:Int32 = 0
            dataSizeRepeatedSfixed32 = 4 * Int32(repeatedSfixed32.count)
            serialize_size += dataSizeRepeatedSfixed32
            serialize_size += 2 * Int32(repeatedSfixed32.count)
            var dataSizeRepeatedSfixed64:Int32 = 0
            dataSizeRepeatedSfixed64 = 8 * Int32(repeatedSfixed64.count)
            serialize_size += dataSizeRepeatedSfixed64
            serialize_size += 2 * Int32(repeatedSfixed64.count)
            var dataSizeRepeatedFloat:Int32 = 0
            dataSizeRepeatedFloat = 4 * Int32(repeatedFloat.count)
            serialize_size += dataSizeRepeatedFloat
            serialize_size += 2 * Int32(repeatedFloat.count)
            var dataSizeRepeatedDouble:Int32 = 0
            dataSizeRepeatedDouble = 8 * Int32(repeatedDouble.count)
            serialize_size += dataSizeRepeatedDouble
            serialize_size += 2 * Int32(repeatedDouble.count)
            var dataSizeRepeatedBool:Int32 = 0
            dataSizeRepeatedBool = 1 * Int32(repeatedBool.count)
            serialize_size += dataSizeRepeatedBool
            serialize_size += 2 * Int32(repeatedBool.count)
            var dataSizeRepeatedString:Int32 = 0
            for oneValuerepeatedString in repeatedString {
                dataSizeRepeatedString += oneValuerepeatedString.computeStringSizeNoTag()
            }
            serialize_size += dataSizeRepeatedString
            serialize_size += 2 * Int32(repeatedString.count)
            var dataSizeRepeatedBytes:Int32 = 0
            for oneValuerepeatedBytes in repeatedBytes {
                dataSizeRepeatedBytes += oneValuerepeatedBytes.computeDataSizeNoTag()
            }
            serialize_size += dataSizeRepeatedBytes
            serialize_size += 2 * Int32(repeatedBytes.count)
            for oneElementRepeatedGroup in repeatedGroup {
                serialize_size += oneElementRepeatedGroup.computeGroupSize(fieldNumber: 46)
            }
            for oneElementRepeatedNestedMessage in repeatedNestedMessage {
                serialize_size += oneElementRepeatedNestedMessage.computeMessageSize(fieldNumber: 48)
            }
            for oneElementRepeatedForeignMessage in repeatedForeignMessage {
                serialize_size += oneElementRepeatedForeignMessage.computeMessageSize(fieldNumber: 49)
            }
            for oneElementRepeatedImportMessage in repeatedImportMessage {
                serialize_size += oneElementRepeatedImportMessage.computeMessageSize(fieldNumber: 50)
            }
            var dataSizerepeatedNestedEnum:Int32 = 0
            for oneValueOfrepeatedNestedEnum in repeatedNestedEnum {
                dataSizerepeatedNestedEnum += oneValueOfrepeatedNestedEnum.rawValue.computeEnumSizeNoTag()
            }
            serialize_size += dataSizerepeatedNestedEnum
            serialize_size += (2 * Int32(repeatedNestedEnum.count))
            var dataSizerepeatedForeignEnum:Int32 = 0
            for oneValueOfrepeatedForeignEnum in repeatedForeignEnum {
                dataSizerepeatedForeignEnum += oneValueOfrepeatedForeignEnum.rawValue.computeEnumSizeNoTag()
            }
            serialize_size += dataSizerepeatedForeignEnum
            serialize_size += (2 * Int32(repeatedForeignEnum.count))
            var dataSizerepeatedImportEnum:Int32 = 0
            for oneValueOfrepeatedImportEnum in repeatedImportEnum {
                dataSizerepeatedImportEnum += oneValueOfrepeatedImportEnum.rawValue.computeEnumSizeNoTag()
            }
            serialize_size += dataSizerepeatedImportEnum
            serialize_size += (2 * Int32(repeatedImportEnum.count))
            var dataSizeRepeatedStringPiece:Int32 = 0
            for oneValuerepeatedStringPiece in repeatedStringPiece {
                dataSizeRepeatedStringPiece += oneValuerepeatedStringPiece.computeStringSizeNoTag()
            }
            serialize_size += dataSizeRepeatedStringPiece
            serialize_size += 2 * Int32(repeatedStringPiece.count)
            var dataSizeRepeatedCord:Int32 = 0
            for oneValuerepeatedCord in repeatedCord {
                dataSizeRepeatedCord += oneValuerepeatedCord.computeStringSizeNoTag()
            }
            serialize_size += dataSizeRepeatedCord
            serialize_size += 2 * Int32(repeatedCord.count)
            for oneElementRepeatedLazyMessage in repeatedLazyMessage {
                serialize_size += oneElementRepeatedLazyMessage.computeMessageSize(fieldNumber: 57)
            }
            if hasDefaultInt32 {
                serialize_size += defaultInt32.computeInt32Size(fieldNumber: 61)
            }
            if hasDefaultInt64 {
                serialize_size += defaultInt64.computeInt64Size(fieldNumber: 62)
            }
            if hasDefaultUint32 {
                serialize_size += defaultUint32.computeUInt32Size(fieldNumber: 63)
            }
            if hasDefaultUint64 {
                serialize_size += defaultUint64.computeUInt64Size(fieldNumber: 64)
            }
            if hasDefaultSint32 {
                serialize_size += defaultSint32.computeSInt32Size(fieldNumber: 65)
            }
            if hasDefaultSint64 {
                serialize_size += defaultSint64.computeSInt64Size(fieldNumber: 66)
            }
            if hasDefaultFixed32 {
                serialize_size += defaultFixed32.computeFixed32Size(fieldNumber: 67)
            }
            if hasDefaultFixed64 {
                serialize_size += defaultFixed64.computeFixed64Size(fieldNumber: 68)
            }
            if hasDefaultSfixed32 {
                serialize_size += defaultSfixed32.computeSFixed32Size(fieldNumber: 69)
            }
            if hasDefaultSfixed64 {
                serialize_size += defaultSfixed64.computeSFixed64Size(fieldNumber: 70)
            }
            if hasDefaultFloat {
                serialize_size += defaultFloat.computeFloatSize(fieldNumber: 71)
            }
            if hasDefaultDouble {
                serialize_size += defaultDouble.computeDoubleSize(fieldNumber: 72)
            }
            if hasDefaultBool {
                serialize_size += defaultBool.computeBoolSize(fieldNumber: 73)
            }
            if hasDefaultString {
                serialize_size += defaultString.computeStringSize(fieldNumber: 74)
            }
            if hasDefaultBytes {
                serialize_size += defaultBytes.computeDataSize(fieldNumber: 75)
            }
            if (hasDefaultNestedEnum) {
                serialize_size += defaultNestedEnum.rawValue.computeEnumSize(fieldNumber: 81)
            }
            if (hasDefaultForeignEnum) {
                serialize_size += defaultForeignEnum.rawValue.computeEnumSize(fieldNumber: 82)
            }
            if (hasDefaultImportEnum) {
                serialize_size += defaultImportEnum.rawValue.computeEnumSize(fieldNumber: 83)
            }
            if hasDefaultStringPiece {
                serialize_size += defaultStringPiece.computeStringSize(fieldNumber: 84)
            }
            if hasDefaultCord {
                serialize_size += defaultCord.computeStringSize(fieldNumber: 85)
            }
            if hasOneofUint32 {
                serialize_size += oneofUint32.computeUInt32Size(fieldNumber: 111)
            }
            if hasOneofNestedMessage {
                if let varSizeoneofNestedMessage = oneofNestedMessage?.computeMessageSize(fieldNumber: 112) {
                    serialize_size += varSizeoneofNestedMessage
                }
            }
            if hasOneofString {
                serialize_size += oneofString.computeStringSize(fieldNumber: 113)
            }
            if hasOneofBytes {
                serialize_size += oneofBytes.computeDataSize(fieldNumber: 114)
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
            return ProtobufUnittest.TestAllTypesLite.classBuilder() as! ProtobufUnittest.TestAllTypesLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestAllTypesLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestAllTypesLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestAllTypesLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestAllTypesLite.Builder {
            return try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
            return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasOptionalInt32 {
                jsonMap["optionalInt32"] = Int(optionalInt32)
            }
            if hasOptionalInt64 {
                jsonMap["optionalInt64"] = "\(optionalInt64!)"
            }
            if hasOptionalUint32 {
                jsonMap["optionalUint32"] = UInt(optionalUint32)
            }
            if hasOptionalUint64 {
                jsonMap["optionalUint64"] = "\(optionalUint64!)"
            }
            if hasOptionalSint32 {
                jsonMap["optionalSint32"] = Int(optionalSint32)
            }
            if hasOptionalSint64 {
                jsonMap["optionalSint64"] = "\(optionalSint64!)"
            }
            if hasOptionalFixed32 {
                jsonMap["optionalFixed32"] = UInt(optionalFixed32)
            }
            if hasOptionalFixed64 {
                jsonMap["optionalFixed64"] = "\(optionalFixed64!)"
            }
            if hasOptionalSfixed32 {
                jsonMap["optionalSfixed32"] = Int(optionalSfixed32)
            }
            if hasOptionalSfixed64 {
                jsonMap["optionalSfixed64"] = "\(optionalSfixed64!)"
            }
            if hasOptionalFloat {
                jsonMap["optionalFloat"] = Float(optionalFloat)
            }
            if hasOptionalDouble {
                jsonMap["optionalDouble"] = Double(optionalDouble)
            }
            if hasOptionalBool {
                jsonMap["optionalBool"] = optionalBool
            }
            if hasOptionalString {
                jsonMap["optionalString"] = optionalString
            }
            if hasOptionalBytes {
                jsonMap["optionalBytes"] = optionalBytes.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
            }
            if hasOptionalGroup {
                jsonMap["optionalgroup"] = try optionalGroup.encode()
            }
            if hasOptionalNestedMessage {
                jsonMap["optionalNestedMessage"] = try optionalNestedMessage.encode()
            }
            if hasOptionalForeignMessage {
                jsonMap["optionalForeignMessage"] = try optionalForeignMessage.encode()
            }
            if hasOptionalImportMessage {
                jsonMap["optionalImportMessage"] = try optionalImportMessage.encode()
            }
            if hasOptionalNestedEnum {
                jsonMap["optionalNestedEnum"] = optionalNestedEnum.toString()
            }
            if hasOptionalForeignEnum {
                jsonMap["optionalForeignEnum"] = optionalForeignEnum.toString()
            }
            if hasOptionalImportEnum {
                jsonMap["optionalImportEnum"] = optionalImportEnum.toString()
            }
            if hasOptionalStringPiece {
                jsonMap["optionalStringPiece"] = optionalStringPiece
            }
            if hasOptionalCord {
                jsonMap["optionalCord"] = optionalCord
            }
            if hasOptionalPublicImportMessage {
                jsonMap["optionalPublicImportMessage"] = try optionalPublicImportMessage.encode()
            }
            if hasOptionalLazyMessage {
                jsonMap["optionalLazyMessage"] = try optionalLazyMessage.encode()
            }
            if !repeatedInt32.isEmpty {
                var jsonArrayRepeatedInt32:Array<Int> = []
                for oneValueRepeatedInt32 in repeatedInt32 {
                    jsonArrayRepeatedInt32.append(Int(oneValueRepeatedInt32))
                }
                jsonMap["repeatedInt32"] = jsonArrayRepeatedInt32
            }
            if !repeatedInt64.isEmpty {
                var jsonArrayRepeatedInt64:Array<String> = []
                for oneValueRepeatedInt64 in repeatedInt64 {
                    jsonArrayRepeatedInt64.append("\(oneValueRepeatedInt64)")
                }
                jsonMap["repeatedInt64"] = jsonArrayRepeatedInt64
            }
            if !repeatedUint32.isEmpty {
                var jsonArrayRepeatedUint32:Array<UInt> = []
                for oneValueRepeatedUint32 in repeatedUint32 {
                    jsonArrayRepeatedUint32.append(UInt(oneValueRepeatedUint32))
                }
                jsonMap["repeatedUint32"] = jsonArrayRepeatedUint32
            }
            if !repeatedUint64.isEmpty {
                var jsonArrayRepeatedUint64:Array<String> = []
                for oneValueRepeatedUint64 in repeatedUint64 {
                    jsonArrayRepeatedUint64.append("\(oneValueRepeatedUint64)")
                }
                jsonMap["repeatedUint64"] = jsonArrayRepeatedUint64
            }
            if !repeatedSint32.isEmpty {
                var jsonArrayRepeatedSint32:Array<Int> = []
                for oneValueRepeatedSint32 in repeatedSint32 {
                    jsonArrayRepeatedSint32.append(Int(oneValueRepeatedSint32))
                }
                jsonMap["repeatedSint32"] = jsonArrayRepeatedSint32
            }
            if !repeatedSint64.isEmpty {
                var jsonArrayRepeatedSint64:Array<String> = []
                for oneValueRepeatedSint64 in repeatedSint64 {
                    jsonArrayRepeatedSint64.append("\(oneValueRepeatedSint64)")
                }
                jsonMap["repeatedSint64"] = jsonArrayRepeatedSint64
            }
            if !repeatedFixed32.isEmpty {
                var jsonArrayRepeatedFixed32:Array<UInt> = []
                for oneValueRepeatedFixed32 in repeatedFixed32 {
                    jsonArrayRepeatedFixed32.append(UInt(oneValueRepeatedFixed32))
                }
                jsonMap["repeatedFixed32"] = jsonArrayRepeatedFixed32
            }
            if !repeatedFixed64.isEmpty {
                var jsonArrayRepeatedFixed64:Array<String> = []
                for oneValueRepeatedFixed64 in repeatedFixed64 {
                    jsonArrayRepeatedFixed64.append("\(oneValueRepeatedFixed64)")
                }
                jsonMap["repeatedFixed64"] = jsonArrayRepeatedFixed64
            }
            if !repeatedSfixed32.isEmpty {
                var jsonArrayRepeatedSfixed32:Array<Int> = []
                for oneValueRepeatedSfixed32 in repeatedSfixed32 {
                    jsonArrayRepeatedSfixed32.append(Int(oneValueRepeatedSfixed32))
                }
                jsonMap["repeatedSfixed32"] = jsonArrayRepeatedSfixed32
            }
            if !repeatedSfixed64.isEmpty {
                var jsonArrayRepeatedSfixed64:Array<String> = []
                for oneValueRepeatedSfixed64 in repeatedSfixed64 {
                    jsonArrayRepeatedSfixed64.append("\(oneValueRepeatedSfixed64)")
                }
                jsonMap["repeatedSfixed64"] = jsonArrayRepeatedSfixed64
            }
            if !repeatedFloat.isEmpty {
                var jsonArrayRepeatedFloat:Array<Float> = []
                for oneValueRepeatedFloat in repeatedFloat {
                    jsonArrayRepeatedFloat.append(Float(oneValueRepeatedFloat))
                }
                jsonMap["repeatedFloat"] = jsonArrayRepeatedFloat
            }
            if !repeatedDouble.isEmpty {
                var jsonArrayRepeatedDouble:Array<Double> = []
                for oneValueRepeatedDouble in repeatedDouble {
                    jsonArrayRepeatedDouble.append(Double(oneValueRepeatedDouble))
                }
                jsonMap["repeatedDouble"] = jsonArrayRepeatedDouble
            }
            if !repeatedBool.isEmpty {
                var jsonArrayRepeatedBool:Array<Bool> = []
                for oneValueRepeatedBool in repeatedBool {
                    jsonArrayRepeatedBool.append(oneValueRepeatedBool)
                }
                jsonMap["repeatedBool"] = jsonArrayRepeatedBool
            }
            if !repeatedString.isEmpty {
                var jsonArrayRepeatedString:Array<String> = []
                for oneValueRepeatedString in repeatedString {
                    jsonArrayRepeatedString.append(oneValueRepeatedString)
                }
                jsonMap["repeatedString"] = jsonArrayRepeatedString
            }
            if !repeatedBytes.isEmpty {
                var jsonArrayRepeatedBytes:Array<String> = []
                for oneValueRepeatedBytes in repeatedBytes {
                    jsonArrayRepeatedBytes.append(oneValueRepeatedBytes.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0)))
                }
                jsonMap["repeatedBytes"] = jsonArrayRepeatedBytes
            }
            if !repeatedGroup.isEmpty {
                var jsonArrayRepeatedGroup:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedGroup in repeatedGroup {
                    let ecodedMessageRepeatedGroup = try oneValueRepeatedGroup.encode()
                    jsonArrayRepeatedGroup.append(ecodedMessageRepeatedGroup)
                }
                jsonMap["repeatedgroup"] = jsonArrayRepeatedGroup
            }
            if !repeatedNestedMessage.isEmpty {
                var jsonArrayRepeatedNestedMessage:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedNestedMessage in repeatedNestedMessage {
                    let ecodedMessageRepeatedNestedMessage = try oneValueRepeatedNestedMessage.encode()
                    jsonArrayRepeatedNestedMessage.append(ecodedMessageRepeatedNestedMessage)
                }
                jsonMap["repeatedNestedMessage"] = jsonArrayRepeatedNestedMessage
            }
            if !repeatedForeignMessage.isEmpty {
                var jsonArrayRepeatedForeignMessage:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedForeignMessage in repeatedForeignMessage {
                    let ecodedMessageRepeatedForeignMessage = try oneValueRepeatedForeignMessage.encode()
                    jsonArrayRepeatedForeignMessage.append(ecodedMessageRepeatedForeignMessage)
                }
                jsonMap["repeatedForeignMessage"] = jsonArrayRepeatedForeignMessage
            }
            if !repeatedImportMessage.isEmpty {
                var jsonArrayRepeatedImportMessage:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedImportMessage in repeatedImportMessage {
                    let ecodedMessageRepeatedImportMessage = try oneValueRepeatedImportMessage.encode()
                    jsonArrayRepeatedImportMessage.append(ecodedMessageRepeatedImportMessage)
                }
                jsonMap["repeatedImportMessage"] = jsonArrayRepeatedImportMessage
            }
            if !repeatedNestedEnum.isEmpty {
                var jsonArrayRepeatedNestedEnum:Array<String> = []
                for oneValueRepeatedNestedEnum in repeatedNestedEnum {
                    jsonArrayRepeatedNestedEnum.append(oneValueRepeatedNestedEnum.toString())
                }
                jsonMap["repeatedNestedEnum"] = jsonArrayRepeatedNestedEnum
            }
            if !repeatedForeignEnum.isEmpty {
                var jsonArrayRepeatedForeignEnum:Array<String> = []
                for oneValueRepeatedForeignEnum in repeatedForeignEnum {
                    jsonArrayRepeatedForeignEnum.append(oneValueRepeatedForeignEnum.toString())
                }
                jsonMap["repeatedForeignEnum"] = jsonArrayRepeatedForeignEnum
            }
            if !repeatedImportEnum.isEmpty {
                var jsonArrayRepeatedImportEnum:Array<String> = []
                for oneValueRepeatedImportEnum in repeatedImportEnum {
                    jsonArrayRepeatedImportEnum.append(oneValueRepeatedImportEnum.toString())
                }
                jsonMap["repeatedImportEnum"] = jsonArrayRepeatedImportEnum
            }
            if !repeatedStringPiece.isEmpty {
                var jsonArrayRepeatedStringPiece:Array<String> = []
                for oneValueRepeatedStringPiece in repeatedStringPiece {
                    jsonArrayRepeatedStringPiece.append(oneValueRepeatedStringPiece)
                }
                jsonMap["repeatedStringPiece"] = jsonArrayRepeatedStringPiece
            }
            if !repeatedCord.isEmpty {
                var jsonArrayRepeatedCord:Array<String> = []
                for oneValueRepeatedCord in repeatedCord {
                    jsonArrayRepeatedCord.append(oneValueRepeatedCord)
                }
                jsonMap["repeatedCord"] = jsonArrayRepeatedCord
            }
            if !repeatedLazyMessage.isEmpty {
                var jsonArrayRepeatedLazyMessage:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedLazyMessage in repeatedLazyMessage {
                    let ecodedMessageRepeatedLazyMessage = try oneValueRepeatedLazyMessage.encode()
                    jsonArrayRepeatedLazyMessage.append(ecodedMessageRepeatedLazyMessage)
                }
                jsonMap["repeatedLazyMessage"] = jsonArrayRepeatedLazyMessage
            }
            if hasDefaultInt32 {
                jsonMap["defaultInt32"] = Int(defaultInt32)
            }
            if hasDefaultInt64 {
                jsonMap["defaultInt64"] = "\(defaultInt64!)"
            }
            if hasDefaultUint32 {
                jsonMap["defaultUint32"] = UInt(defaultUint32)
            }
            if hasDefaultUint64 {
                jsonMap["defaultUint64"] = "\(defaultUint64!)"
            }
            if hasDefaultSint32 {
                jsonMap["defaultSint32"] = Int(defaultSint32)
            }
            if hasDefaultSint64 {
                jsonMap["defaultSint64"] = "\(defaultSint64!)"
            }
            if hasDefaultFixed32 {
                jsonMap["defaultFixed32"] = UInt(defaultFixed32)
            }
            if hasDefaultFixed64 {
                jsonMap["defaultFixed64"] = "\(defaultFixed64!)"
            }
            if hasDefaultSfixed32 {
                jsonMap["defaultSfixed32"] = Int(defaultSfixed32)
            }
            if hasDefaultSfixed64 {
                jsonMap["defaultSfixed64"] = "\(defaultSfixed64!)"
            }
            if hasDefaultFloat {
                jsonMap["defaultFloat"] = Float(defaultFloat)
            }
            if hasDefaultDouble {
                jsonMap["defaultDouble"] = Double(defaultDouble)
            }
            if hasDefaultBool {
                jsonMap["defaultBool"] = defaultBool
            }
            if hasDefaultString {
                jsonMap["defaultString"] = defaultString
            }
            if hasDefaultBytes {
                jsonMap["defaultBytes"] = defaultBytes.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
            }
            if hasDefaultNestedEnum {
                jsonMap["defaultNestedEnum"] = defaultNestedEnum.toString()
            }
            if hasDefaultForeignEnum {
                jsonMap["defaultForeignEnum"] = defaultForeignEnum.toString()
            }
            if hasDefaultImportEnum {
                jsonMap["defaultImportEnum"] = defaultImportEnum.toString()
            }
            if hasDefaultStringPiece {
                jsonMap["defaultStringPiece"] = defaultStringPiece
            }
            if hasDefaultCord {
                jsonMap["defaultCord"] = defaultCord
            }
            if hasOneofUint32 {
                jsonMap["oneofUint32"] = UInt(oneofUint32)
            }
            if hasOneofNestedMessage {
                jsonMap["oneofNestedMessage"] = try oneofNestedMessage.encode()
            }
            if hasOneofString {
                jsonMap["oneofString"] = oneofString
            }
            if hasOneofBytes {
                jsonMap["oneofBytes"] = oneofBytes.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestAllTypesLite {
            return try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite {
            return try ProtobufUnittest.TestAllTypesLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasOptionalInt32 {
                output += "\(indent) optionalInt32: \(String(describing: optionalInt32)) \n"
            }
            if hasOptionalInt64 {
                output += "\(indent) optionalInt64: \(String(describing: optionalInt64)) \n"
            }
            if hasOptionalUint32 {
                output += "\(indent) optionalUint32: \(String(describing: optionalUint32)) \n"
            }
            if hasOptionalUint64 {
                output += "\(indent) optionalUint64: \(String(describing: optionalUint64)) \n"
            }
            if hasOptionalSint32 {
                output += "\(indent) optionalSint32: \(String(describing: optionalSint32)) \n"
            }
            if hasOptionalSint64 {
                output += "\(indent) optionalSint64: \(String(describing: optionalSint64)) \n"
            }
            if hasOptionalFixed32 {
                output += "\(indent) optionalFixed32: \(String(describing: optionalFixed32)) \n"
            }
            if hasOptionalFixed64 {
                output += "\(indent) optionalFixed64: \(String(describing: optionalFixed64)) \n"
            }
            if hasOptionalSfixed32 {
                output += "\(indent) optionalSfixed32: \(String(describing: optionalSfixed32)) \n"
            }
            if hasOptionalSfixed64 {
                output += "\(indent) optionalSfixed64: \(String(describing: optionalSfixed64)) \n"
            }
            if hasOptionalFloat {
                output += "\(indent) optionalFloat: \(String(describing: optionalFloat)) \n"
            }
            if hasOptionalDouble {
                output += "\(indent) optionalDouble: \(String(describing: optionalDouble)) \n"
            }
            if hasOptionalBool {
                output += "\(indent) optionalBool: \(String(describing: optionalBool)) \n"
            }
            if hasOptionalString {
                output += "\(indent) optionalString: \(String(describing: optionalString)) \n"
            }
            if hasOptionalBytes {
                output += "\(indent) optionalBytes: \(String(describing: optionalBytes)) \n"
            }
            if hasOptionalGroup {
                output += "\(indent) optionalGroup {\n"
                if let outDescOptionalGroup = optionalGroup {
                    output += try outDescOptionalGroup.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOptionalNestedMessage {
                output += "\(indent) optionalNestedMessage {\n"
                if let outDescOptionalNestedMessage = optionalNestedMessage {
                    output += try outDescOptionalNestedMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOptionalForeignMessage {
                output += "\(indent) optionalForeignMessage {\n"
                if let outDescOptionalForeignMessage = optionalForeignMessage {
                    output += try outDescOptionalForeignMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOptionalImportMessage {
                output += "\(indent) optionalImportMessage {\n"
                if let outDescOptionalImportMessage = optionalImportMessage {
                    output += try outDescOptionalImportMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if (hasOptionalNestedEnum) {
                output += "\(indent) optionalNestedEnum: \(optionalNestedEnum.description)\n"
            }
            if (hasOptionalForeignEnum) {
                output += "\(indent) optionalForeignEnum: \(optionalForeignEnum.description)\n"
            }
            if (hasOptionalImportEnum) {
                output += "\(indent) optionalImportEnum: \(optionalImportEnum.description)\n"
            }
            if hasOptionalStringPiece {
                output += "\(indent) optionalStringPiece: \(String(describing: optionalStringPiece)) \n"
            }
            if hasOptionalCord {
                output += "\(indent) optionalCord: \(String(describing: optionalCord)) \n"
            }
            if hasOptionalPublicImportMessage {
                output += "\(indent) optionalPublicImportMessage {\n"
                if let outDescOptionalPublicImportMessage = optionalPublicImportMessage {
                    output += try outDescOptionalPublicImportMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOptionalLazyMessage {
                output += "\(indent) optionalLazyMessage {\n"
                if let outDescOptionalLazyMessage = optionalLazyMessage {
                    output += try outDescOptionalLazyMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            var repeatedInt32ElementIndex:Int = 0
            for oneValueRepeatedInt32 in repeatedInt32  {
                output += "\(indent) repeatedInt32[\(repeatedInt32ElementIndex)]: \(oneValueRepeatedInt32)\n"
                repeatedInt32ElementIndex += 1
            }
            var repeatedInt64ElementIndex:Int = 0
            for oneValueRepeatedInt64 in repeatedInt64  {
                output += "\(indent) repeatedInt64[\(repeatedInt64ElementIndex)]: \(oneValueRepeatedInt64)\n"
                repeatedInt64ElementIndex += 1
            }
            var repeatedUint32ElementIndex:Int = 0
            for oneValueRepeatedUint32 in repeatedUint32  {
                output += "\(indent) repeatedUint32[\(repeatedUint32ElementIndex)]: \(oneValueRepeatedUint32)\n"
                repeatedUint32ElementIndex += 1
            }
            var repeatedUint64ElementIndex:Int = 0
            for oneValueRepeatedUint64 in repeatedUint64  {
                output += "\(indent) repeatedUint64[\(repeatedUint64ElementIndex)]: \(oneValueRepeatedUint64)\n"
                repeatedUint64ElementIndex += 1
            }
            var repeatedSint32ElementIndex:Int = 0
            for oneValueRepeatedSint32 in repeatedSint32  {
                output += "\(indent) repeatedSint32[\(repeatedSint32ElementIndex)]: \(oneValueRepeatedSint32)\n"
                repeatedSint32ElementIndex += 1
            }
            var repeatedSint64ElementIndex:Int = 0
            for oneValueRepeatedSint64 in repeatedSint64  {
                output += "\(indent) repeatedSint64[\(repeatedSint64ElementIndex)]: \(oneValueRepeatedSint64)\n"
                repeatedSint64ElementIndex += 1
            }
            var repeatedFixed32ElementIndex:Int = 0
            for oneValueRepeatedFixed32 in repeatedFixed32  {
                output += "\(indent) repeatedFixed32[\(repeatedFixed32ElementIndex)]: \(oneValueRepeatedFixed32)\n"
                repeatedFixed32ElementIndex += 1
            }
            var repeatedFixed64ElementIndex:Int = 0
            for oneValueRepeatedFixed64 in repeatedFixed64  {
                output += "\(indent) repeatedFixed64[\(repeatedFixed64ElementIndex)]: \(oneValueRepeatedFixed64)\n"
                repeatedFixed64ElementIndex += 1
            }
            var repeatedSfixed32ElementIndex:Int = 0
            for oneValueRepeatedSfixed32 in repeatedSfixed32  {
                output += "\(indent) repeatedSfixed32[\(repeatedSfixed32ElementIndex)]: \(oneValueRepeatedSfixed32)\n"
                repeatedSfixed32ElementIndex += 1
            }
            var repeatedSfixed64ElementIndex:Int = 0
            for oneValueRepeatedSfixed64 in repeatedSfixed64  {
                output += "\(indent) repeatedSfixed64[\(repeatedSfixed64ElementIndex)]: \(oneValueRepeatedSfixed64)\n"
                repeatedSfixed64ElementIndex += 1
            }
            var repeatedFloatElementIndex:Int = 0
            for oneValueRepeatedFloat in repeatedFloat  {
                output += "\(indent) repeatedFloat[\(repeatedFloatElementIndex)]: \(oneValueRepeatedFloat)\n"
                repeatedFloatElementIndex += 1
            }
            var repeatedDoubleElementIndex:Int = 0
            for oneValueRepeatedDouble in repeatedDouble  {
                output += "\(indent) repeatedDouble[\(repeatedDoubleElementIndex)]: \(oneValueRepeatedDouble)\n"
                repeatedDoubleElementIndex += 1
            }
            var repeatedBoolElementIndex:Int = 0
            for oneValueRepeatedBool in repeatedBool  {
                output += "\(indent) repeatedBool[\(repeatedBoolElementIndex)]: \(oneValueRepeatedBool)\n"
                repeatedBoolElementIndex += 1
            }
            var repeatedStringElementIndex:Int = 0
            for oneValueRepeatedString in repeatedString  {
                output += "\(indent) repeatedString[\(repeatedStringElementIndex)]: \(oneValueRepeatedString)\n"
                repeatedStringElementIndex += 1
            }
            var repeatedBytesElementIndex:Int = 0
            for oneValueRepeatedBytes in repeatedBytes  {
                output += "\(indent) repeatedBytes[\(repeatedBytesElementIndex)]: \(oneValueRepeatedBytes)\n"
                repeatedBytesElementIndex += 1
            }
            var repeatedGroupElementIndex:Int = 0
            for oneElementRepeatedGroup in repeatedGroup {
                output += "\(indent) repeatedGroup[\(repeatedGroupElementIndex)] {\n"
                output += try oneElementRepeatedGroup.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedGroupElementIndex += 1
            }
            var repeatedNestedMessageElementIndex:Int = 0
            for oneElementRepeatedNestedMessage in repeatedNestedMessage {
                output += "\(indent) repeatedNestedMessage[\(repeatedNestedMessageElementIndex)] {\n"
                output += try oneElementRepeatedNestedMessage.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedNestedMessageElementIndex += 1
            }
            var repeatedForeignMessageElementIndex:Int = 0
            for oneElementRepeatedForeignMessage in repeatedForeignMessage {
                output += "\(indent) repeatedForeignMessage[\(repeatedForeignMessageElementIndex)] {\n"
                output += try oneElementRepeatedForeignMessage.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedForeignMessageElementIndex += 1
            }
            var repeatedImportMessageElementIndex:Int = 0
            for oneElementRepeatedImportMessage in repeatedImportMessage {
                output += "\(indent) repeatedImportMessage[\(repeatedImportMessageElementIndex)] {\n"
                output += try oneElementRepeatedImportMessage.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedImportMessageElementIndex += 1
            }
            var repeatedNestedEnumElementIndex:Int = 0
            for oneValueOfrepeatedNestedEnum in repeatedNestedEnum {
                output += "\(indent) repeatedNestedEnum[\(repeatedNestedEnumElementIndex)]: \(oneValueOfrepeatedNestedEnum.description)\n"
                repeatedNestedEnumElementIndex += 1
            }
            var repeatedForeignEnumElementIndex:Int = 0
            for oneValueOfrepeatedForeignEnum in repeatedForeignEnum {
                output += "\(indent) repeatedForeignEnum[\(repeatedForeignEnumElementIndex)]: \(oneValueOfrepeatedForeignEnum.description)\n"
                repeatedForeignEnumElementIndex += 1
            }
            var repeatedImportEnumElementIndex:Int = 0
            for oneValueOfrepeatedImportEnum in repeatedImportEnum {
                output += "\(indent) repeatedImportEnum[\(repeatedImportEnumElementIndex)]: \(oneValueOfrepeatedImportEnum.description)\n"
                repeatedImportEnumElementIndex += 1
            }
            var repeatedStringPieceElementIndex:Int = 0
            for oneValueRepeatedStringPiece in repeatedStringPiece  {
                output += "\(indent) repeatedStringPiece[\(repeatedStringPieceElementIndex)]: \(oneValueRepeatedStringPiece)\n"
                repeatedStringPieceElementIndex += 1
            }
            var repeatedCordElementIndex:Int = 0
            for oneValueRepeatedCord in repeatedCord  {
                output += "\(indent) repeatedCord[\(repeatedCordElementIndex)]: \(oneValueRepeatedCord)\n"
                repeatedCordElementIndex += 1
            }
            var repeatedLazyMessageElementIndex:Int = 0
            for oneElementRepeatedLazyMessage in repeatedLazyMessage {
                output += "\(indent) repeatedLazyMessage[\(repeatedLazyMessageElementIndex)] {\n"
                output += try oneElementRepeatedLazyMessage.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedLazyMessageElementIndex += 1
            }
            if hasDefaultInt32 {
                output += "\(indent) defaultInt32: \(String(describing: defaultInt32)) \n"
            }
            if hasDefaultInt64 {
                output += "\(indent) defaultInt64: \(String(describing: defaultInt64)) \n"
            }
            if hasDefaultUint32 {
                output += "\(indent) defaultUint32: \(String(describing: defaultUint32)) \n"
            }
            if hasDefaultUint64 {
                output += "\(indent) defaultUint64: \(String(describing: defaultUint64)) \n"
            }
            if hasDefaultSint32 {
                output += "\(indent) defaultSint32: \(String(describing: defaultSint32)) \n"
            }
            if hasDefaultSint64 {
                output += "\(indent) defaultSint64: \(String(describing: defaultSint64)) \n"
            }
            if hasDefaultFixed32 {
                output += "\(indent) defaultFixed32: \(String(describing: defaultFixed32)) \n"
            }
            if hasDefaultFixed64 {
                output += "\(indent) defaultFixed64: \(String(describing: defaultFixed64)) \n"
            }
            if hasDefaultSfixed32 {
                output += "\(indent) defaultSfixed32: \(String(describing: defaultSfixed32)) \n"
            }
            if hasDefaultSfixed64 {
                output += "\(indent) defaultSfixed64: \(String(describing: defaultSfixed64)) \n"
            }
            if hasDefaultFloat {
                output += "\(indent) defaultFloat: \(String(describing: defaultFloat)) \n"
            }
            if hasDefaultDouble {
                output += "\(indent) defaultDouble: \(String(describing: defaultDouble)) \n"
            }
            if hasDefaultBool {
                output += "\(indent) defaultBool: \(String(describing: defaultBool)) \n"
            }
            if hasDefaultString {
                output += "\(indent) defaultString: \(String(describing: defaultString)) \n"
            }
            if hasDefaultBytes {
                output += "\(indent) defaultBytes: \(String(describing: defaultBytes)) \n"
            }
            if (hasDefaultNestedEnum) {
                output += "\(indent) defaultNestedEnum: \(defaultNestedEnum.description)\n"
            }
            if (hasDefaultForeignEnum) {
                output += "\(indent) defaultForeignEnum: \(defaultForeignEnum.description)\n"
            }
            if (hasDefaultImportEnum) {
                output += "\(indent) defaultImportEnum: \(defaultImportEnum.description)\n"
            }
            if hasDefaultStringPiece {
                output += "\(indent) defaultStringPiece: \(String(describing: defaultStringPiece)) \n"
            }
            if hasDefaultCord {
                output += "\(indent) defaultCord: \(String(describing: defaultCord)) \n"
            }
            if hasOneofUint32 {
                output += "\(indent) oneofUint32: \(String(describing: oneofUint32)) \n"
            }
            if hasOneofNestedMessage {
                output += "\(indent) oneofNestedMessage {\n"
                if let outDescOneofNestedMessage = oneofNestedMessage {
                    output += try outDescOneofNestedMessage.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOneofString {
                output += "\(indent) oneofString: \(String(describing: oneofString)) \n"
            }
            if hasOneofBytes {
                output += "\(indent) oneofBytes: \(String(describing: oneofBytes)) \n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasOptionalInt32 {
                    hashCode = (hashCode &* 31) &+ optionalInt32.hashValue
                }
                if hasOptionalInt64 {
                    hashCode = (hashCode &* 31) &+ optionalInt64.hashValue
                }
                if hasOptionalUint32 {
                    hashCode = (hashCode &* 31) &+ optionalUint32.hashValue
                }
                if hasOptionalUint64 {
                    hashCode = (hashCode &* 31) &+ optionalUint64.hashValue
                }
                if hasOptionalSint32 {
                    hashCode = (hashCode &* 31) &+ optionalSint32.hashValue
                }
                if hasOptionalSint64 {
                    hashCode = (hashCode &* 31) &+ optionalSint64.hashValue
                }
                if hasOptionalFixed32 {
                    hashCode = (hashCode &* 31) &+ optionalFixed32.hashValue
                }
                if hasOptionalFixed64 {
                    hashCode = (hashCode &* 31) &+ optionalFixed64.hashValue
                }
                if hasOptionalSfixed32 {
                    hashCode = (hashCode &* 31) &+ optionalSfixed32.hashValue
                }
                if hasOptionalSfixed64 {
                    hashCode = (hashCode &* 31) &+ optionalSfixed64.hashValue
                }
                if hasOptionalFloat {
                    hashCode = (hashCode &* 31) &+ optionalFloat.hashValue
                }
                if hasOptionalDouble {
                    hashCode = (hashCode &* 31) &+ optionalDouble.hashValue
                }
                if hasOptionalBool {
                    hashCode = (hashCode &* 31) &+ optionalBool.hashValue
                }
                if hasOptionalString {
                    hashCode = (hashCode &* 31) &+ optionalString.hashValue
                }
                if hasOptionalBytes {
                    hashCode = (hashCode &* 31) &+ optionalBytes.hashValue
                }
                if hasOptionalGroup {
                    if let hashValueoptionalGroup = optionalGroup?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalGroup
                    }
                }
                if hasOptionalNestedMessage {
                    if let hashValueoptionalNestedMessage = optionalNestedMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalNestedMessage
                    }
                }
                if hasOptionalForeignMessage {
                    if let hashValueoptionalForeignMessage = optionalForeignMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalForeignMessage
                    }
                }
                if hasOptionalImportMessage {
                    if let hashValueoptionalImportMessage = optionalImportMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalImportMessage
                    }
                }
                if hasOptionalNestedEnum {
                     hashCode = (hashCode &* 31) &+ optionalNestedEnum.hashValue
                }
                if hasOptionalForeignEnum {
                     hashCode = (hashCode &* 31) &+ optionalForeignEnum.hashValue
                }
                if hasOptionalImportEnum {
                     hashCode = (hashCode &* 31) &+ optionalImportEnum.hashValue
                }
                if hasOptionalStringPiece {
                    hashCode = (hashCode &* 31) &+ optionalStringPiece.hashValue
                }
                if hasOptionalCord {
                    hashCode = (hashCode &* 31) &+ optionalCord.hashValue
                }
                if hasOptionalPublicImportMessage {
                    if let hashValueoptionalPublicImportMessage = optionalPublicImportMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalPublicImportMessage
                    }
                }
                if hasOptionalLazyMessage {
                    if let hashValueoptionalLazyMessage = optionalLazyMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalLazyMessage
                    }
                }
                for oneValueRepeatedInt32 in repeatedInt32 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedInt32.hashValue
                }
                for oneValueRepeatedInt64 in repeatedInt64 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedInt64.hashValue
                }
                for oneValueRepeatedUint32 in repeatedUint32 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedUint32.hashValue
                }
                for oneValueRepeatedUint64 in repeatedUint64 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedUint64.hashValue
                }
                for oneValueRepeatedSint32 in repeatedSint32 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedSint32.hashValue
                }
                for oneValueRepeatedSint64 in repeatedSint64 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedSint64.hashValue
                }
                for oneValueRepeatedFixed32 in repeatedFixed32 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedFixed32.hashValue
                }
                for oneValueRepeatedFixed64 in repeatedFixed64 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedFixed64.hashValue
                }
                for oneValueRepeatedSfixed32 in repeatedSfixed32 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedSfixed32.hashValue
                }
                for oneValueRepeatedSfixed64 in repeatedSfixed64 {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedSfixed64.hashValue
                }
                for oneValueRepeatedFloat in repeatedFloat {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedFloat.hashValue
                }
                for oneValueRepeatedDouble in repeatedDouble {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedDouble.hashValue
                }
                for oneValueRepeatedBool in repeatedBool {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedBool.hashValue
                }
                for oneValueRepeatedString in repeatedString {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedString.hashValue
                }
                for oneValueRepeatedBytes in repeatedBytes {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedBytes.hashValue
                }
                for oneElementRepeatedGroup in repeatedGroup {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedGroup.hashValue
                }
                for oneElementRepeatedNestedMessage in repeatedNestedMessage {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedNestedMessage.hashValue
                }
                for oneElementRepeatedForeignMessage in repeatedForeignMessage {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedForeignMessage.hashValue
                }
                for oneElementRepeatedImportMessage in repeatedImportMessage {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedImportMessage.hashValue
                }
                for oneValueOfrepeatedNestedEnum in repeatedNestedEnum {
                    hashCode = (hashCode &* 31) &+ oneValueOfrepeatedNestedEnum.hashValue
                }
                for oneValueOfrepeatedForeignEnum in repeatedForeignEnum {
                    hashCode = (hashCode &* 31) &+ oneValueOfrepeatedForeignEnum.hashValue
                }
                for oneValueOfrepeatedImportEnum in repeatedImportEnum {
                    hashCode = (hashCode &* 31) &+ oneValueOfrepeatedImportEnum.hashValue
                }
                for oneValueRepeatedStringPiece in repeatedStringPiece {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedStringPiece.hashValue
                }
                for oneValueRepeatedCord in repeatedCord {
                    hashCode = (hashCode &* 31) &+ oneValueRepeatedCord.hashValue
                }
                for oneElementRepeatedLazyMessage in repeatedLazyMessage {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedLazyMessage.hashValue
                }
                if hasDefaultInt32 {
                    hashCode = (hashCode &* 31) &+ defaultInt32.hashValue
                }
                if hasDefaultInt64 {
                    hashCode = (hashCode &* 31) &+ defaultInt64.hashValue
                }
                if hasDefaultUint32 {
                    hashCode = (hashCode &* 31) &+ defaultUint32.hashValue
                }
                if hasDefaultUint64 {
                    hashCode = (hashCode &* 31) &+ defaultUint64.hashValue
                }
                if hasDefaultSint32 {
                    hashCode = (hashCode &* 31) &+ defaultSint32.hashValue
                }
                if hasDefaultSint64 {
                    hashCode = (hashCode &* 31) &+ defaultSint64.hashValue
                }
                if hasDefaultFixed32 {
                    hashCode = (hashCode &* 31) &+ defaultFixed32.hashValue
                }
                if hasDefaultFixed64 {
                    hashCode = (hashCode &* 31) &+ defaultFixed64.hashValue
                }
                if hasDefaultSfixed32 {
                    hashCode = (hashCode &* 31) &+ defaultSfixed32.hashValue
                }
                if hasDefaultSfixed64 {
                    hashCode = (hashCode &* 31) &+ defaultSfixed64.hashValue
                }
                if hasDefaultFloat {
                    hashCode = (hashCode &* 31) &+ defaultFloat.hashValue
                }
                if hasDefaultDouble {
                    hashCode = (hashCode &* 31) &+ defaultDouble.hashValue
                }
                if hasDefaultBool {
                    hashCode = (hashCode &* 31) &+ defaultBool.hashValue
                }
                if hasDefaultString {
                    hashCode = (hashCode &* 31) &+ defaultString.hashValue
                }
                if hasDefaultBytes {
                    hashCode = (hashCode &* 31) &+ defaultBytes.hashValue
                }
                if hasDefaultNestedEnum {
                     hashCode = (hashCode &* 31) &+ defaultNestedEnum.hashValue
                }
                if hasDefaultForeignEnum {
                     hashCode = (hashCode &* 31) &+ defaultForeignEnum.hashValue
                }
                if hasDefaultImportEnum {
                     hashCode = (hashCode &* 31) &+ defaultImportEnum.hashValue
                }
                if hasDefaultStringPiece {
                    hashCode = (hashCode &* 31) &+ defaultStringPiece.hashValue
                }
                if hasDefaultCord {
                    hashCode = (hashCode &* 31) &+ defaultCord.hashValue
                }
                if hasOneofUint32 {
                    hashCode = (hashCode &* 31) &+ oneofUint32.hashValue
                }
                if hasOneofNestedMessage {
                    if let hashValueoneofNestedMessage = oneofNestedMessage?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoneofNestedMessage
                    }
                }
                if hasOneofString {
                    hashCode = (hashCode &* 31) &+ oneofString.hashValue
                }
                if hasOneofBytes {
                    hashCode = (hashCode &* 31) &+ oneofBytes.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public func setOneofField(_ oneOf:TestAllTypesLite.OneofField) ->  ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.storageOneofField = oneOf
                return self
            }
            /// Singular
            public var optionalInt32:Int32 {
                get {
                    return builderResult.optionalInt32
                }
                set (value) {
                    builderResult.hasOptionalInt32 = true
                    builderResult.optionalInt32 = value
                }
            }
            public var hasOptionalInt32:Bool {
                get {
                    return builderResult.hasOptionalInt32
                }
            }
            @discardableResult
            public func setOptionalInt32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalInt32 = value
                return self
            }
            @discardableResult
            public func clearOptionalInt32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalInt32 = false
                builderResult.optionalInt32 = nil
                return self
            }
            public var optionalInt64:Int64 {
                get {
                    return builderResult.optionalInt64
                }
                set (value) {
                    builderResult.hasOptionalInt64 = true
                    builderResult.optionalInt64 = value
                }
            }
            public var hasOptionalInt64:Bool {
                get {
                    return builderResult.hasOptionalInt64
                }
            }
            @discardableResult
            public func setOptionalInt64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalInt64 = value
                return self
            }
            @discardableResult
            public func clearOptionalInt64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalInt64 = false
                builderResult.optionalInt64 = nil
                return self
            }
            public var optionalUint32:UInt32 {
                get {
                    return builderResult.optionalUint32
                }
                set (value) {
                    builderResult.hasOptionalUint32 = true
                    builderResult.optionalUint32 = value
                }
            }
            public var hasOptionalUint32:Bool {
                get {
                    return builderResult.hasOptionalUint32
                }
            }
            @discardableResult
            public func setOptionalUint32(_ value:UInt32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalUint32 = value
                return self
            }
            @discardableResult
            public func clearOptionalUint32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalUint32 = false
                builderResult.optionalUint32 = nil
                return self
            }
            public var optionalUint64:UInt64 {
                get {
                    return builderResult.optionalUint64
                }
                set (value) {
                    builderResult.hasOptionalUint64 = true
                    builderResult.optionalUint64 = value
                }
            }
            public var hasOptionalUint64:Bool {
                get {
                    return builderResult.hasOptionalUint64
                }
            }
            @discardableResult
            public func setOptionalUint64(_ value:UInt64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalUint64 = value
                return self
            }
            @discardableResult
            public func clearOptionalUint64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalUint64 = false
                builderResult.optionalUint64 = nil
                return self
            }
            public var optionalSint32:Int32 {
                get {
                    return builderResult.optionalSint32
                }
                set (value) {
                    builderResult.hasOptionalSint32 = true
                    builderResult.optionalSint32 = value
                }
            }
            public var hasOptionalSint32:Bool {
                get {
                    return builderResult.hasOptionalSint32
                }
            }
            @discardableResult
            public func setOptionalSint32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalSint32 = value
                return self
            }
            @discardableResult
            public func clearOptionalSint32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalSint32 = false
                builderResult.optionalSint32 = nil
                return self
            }
            public var optionalSint64:Int64 {
                get {
                    return builderResult.optionalSint64
                }
                set (value) {
                    builderResult.hasOptionalSint64 = true
                    builderResult.optionalSint64 = value
                }
            }
            public var hasOptionalSint64:Bool {
                get {
                    return builderResult.hasOptionalSint64
                }
            }
            @discardableResult
            public func setOptionalSint64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalSint64 = value
                return self
            }
            @discardableResult
            public func clearOptionalSint64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalSint64 = false
                builderResult.optionalSint64 = nil
                return self
            }
            public var optionalFixed32:UInt32 {
                get {
                    return builderResult.optionalFixed32
                }
                set (value) {
                    builderResult.hasOptionalFixed32 = true
                    builderResult.optionalFixed32 = value
                }
            }
            public var hasOptionalFixed32:Bool {
                get {
                    return builderResult.hasOptionalFixed32
                }
            }
            @discardableResult
            public func setOptionalFixed32(_ value:UInt32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalFixed32 = value
                return self
            }
            @discardableResult
            public func clearOptionalFixed32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalFixed32 = false
                builderResult.optionalFixed32 = nil
                return self
            }
            public var optionalFixed64:UInt64 {
                get {
                    return builderResult.optionalFixed64
                }
                set (value) {
                    builderResult.hasOptionalFixed64 = true
                    builderResult.optionalFixed64 = value
                }
            }
            public var hasOptionalFixed64:Bool {
                get {
                    return builderResult.hasOptionalFixed64
                }
            }
            @discardableResult
            public func setOptionalFixed64(_ value:UInt64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalFixed64 = value
                return self
            }
            @discardableResult
            public func clearOptionalFixed64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalFixed64 = false
                builderResult.optionalFixed64 = nil
                return self
            }
            public var optionalSfixed32:Int32 {
                get {
                    return builderResult.optionalSfixed32
                }
                set (value) {
                    builderResult.hasOptionalSfixed32 = true
                    builderResult.optionalSfixed32 = value
                }
            }
            public var hasOptionalSfixed32:Bool {
                get {
                    return builderResult.hasOptionalSfixed32
                }
            }
            @discardableResult
            public func setOptionalSfixed32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalSfixed32 = value
                return self
            }
            @discardableResult
            public func clearOptionalSfixed32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalSfixed32 = false
                builderResult.optionalSfixed32 = nil
                return self
            }
            public var optionalSfixed64:Int64 {
                get {
                    return builderResult.optionalSfixed64
                }
                set (value) {
                    builderResult.hasOptionalSfixed64 = true
                    builderResult.optionalSfixed64 = value
                }
            }
            public var hasOptionalSfixed64:Bool {
                get {
                    return builderResult.hasOptionalSfixed64
                }
            }
            @discardableResult
            public func setOptionalSfixed64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalSfixed64 = value
                return self
            }
            @discardableResult
            public func clearOptionalSfixed64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalSfixed64 = false
                builderResult.optionalSfixed64 = nil
                return self
            }
            public var optionalFloat:Float {
                get {
                    return builderResult.optionalFloat
                }
                set (value) {
                    builderResult.hasOptionalFloat = true
                    builderResult.optionalFloat = value
                }
            }
            public var hasOptionalFloat:Bool {
                get {
                    return builderResult.hasOptionalFloat
                }
            }
            @discardableResult
            public func setOptionalFloat(_ value:Float) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalFloat = value
                return self
            }
            @discardableResult
            public func clearOptionalFloat() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalFloat = false
                builderResult.optionalFloat = nil
                return self
            }
            public var optionalDouble:Double {
                get {
                    return builderResult.optionalDouble
                }
                set (value) {
                    builderResult.hasOptionalDouble = true
                    builderResult.optionalDouble = value
                }
            }
            public var hasOptionalDouble:Bool {
                get {
                    return builderResult.hasOptionalDouble
                }
            }
            @discardableResult
            public func setOptionalDouble(_ value:Double) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalDouble = value
                return self
            }
            @discardableResult
            public func clearOptionalDouble() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalDouble = false
                builderResult.optionalDouble = nil
                return self
            }
            public var optionalBool:Bool {
                get {
                    return builderResult.optionalBool
                }
                set (value) {
                    builderResult.hasOptionalBool = true
                    builderResult.optionalBool = value
                }
            }
            public var hasOptionalBool:Bool {
                get {
                    return builderResult.hasOptionalBool
                }
            }
            @discardableResult
            public func setOptionalBool(_ value:Bool) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalBool = value
                return self
            }
            @discardableResult
            public func clearOptionalBool() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalBool = false
                builderResult.optionalBool = nil
                return self
            }
            public var optionalString:String {
                get {
                    return builderResult.optionalString
                }
                set (value) {
                    builderResult.hasOptionalString = true
                    builderResult.optionalString = value
                }
            }
            public var hasOptionalString:Bool {
                get {
                    return builderResult.hasOptionalString
                }
            }
            @discardableResult
            public func setOptionalString(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalString = value
                return self
            }
            @discardableResult
            public func clearOptionalString() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalString = false
                builderResult.optionalString = nil
                return self
            }
            public var optionalBytes:Data {
                get {
                    return builderResult.optionalBytes
                }
                set (value) {
                    builderResult.hasOptionalBytes = true
                    builderResult.optionalBytes = value
                }
            }
            public var hasOptionalBytes:Bool {
                get {
                    return builderResult.hasOptionalBytes
                }
            }
            @discardableResult
            public func setOptionalBytes(_ value:Data) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalBytes = value
                return self
            }
            @discardableResult
            public func clearOptionalBytes() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalBytes = false
                builderResult.optionalBytes = nil
                return self
            }
            public var optionalGroup:ProtobufUnittest.TestAllTypesLite.OptionalGroup! {
                get {
                    if optionalGroupBuilder_ != nil {
                        builderResult.optionalGroup = optionalGroupBuilder_.getMessage()
                    }
                    return builderResult.optionalGroup
                }
                set (value) {
                    builderResult.hasOptionalGroup = value != nil
                    builderResult.optionalGroup = value
                }
            }
            public var hasOptionalGroup:Bool {
                get {
                    return builderResult.hasOptionalGroup
                }
            }
            fileprivate var optionalGroupBuilder_:ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder! {
                didSet {
                    builderResult.hasOptionalGroup = true
                }
            }
            public func getOptionalGroupBuilder() -> ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder {
                if optionalGroupBuilder_ == nil {
                    optionalGroupBuilder_ = ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder()
                    builderResult.optionalGroup = optionalGroupBuilder_.getMessage()
                    if optionalGroup != nil {
                        try! optionalGroupBuilder_.mergeFrom(other: optionalGroup)
                    }
                }
                return optionalGroupBuilder_
            }
            @discardableResult
            public func setOptionalGroup(_ value:ProtobufUnittest.TestAllTypesLite.OptionalGroup!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalGroup = value
                return self
            }
            @discardableResult
            public func mergeOptionalGroup(value:ProtobufUnittest.TestAllTypesLite.OptionalGroup) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalGroup {
                    builderResult.optionalGroup = try ProtobufUnittest.TestAllTypesLite.OptionalGroup.builderWithPrototype(prototype:builderResult.optionalGroup).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalGroup = value
                }
                builderResult.hasOptionalGroup = true
                return self
            }
            @discardableResult
            public func clearOptionalGroup() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalGroupBuilder_ = nil
                builderResult.hasOptionalGroup = false
                builderResult.optionalGroup = nil
                return self
            }
            public var optionalNestedMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage! {
                get {
                    if optionalNestedMessageBuilder_ != nil {
                        builderResult.optionalNestedMessage = optionalNestedMessageBuilder_.getMessage()
                    }
                    return builderResult.optionalNestedMessage
                }
                set (value) {
                    builderResult.hasOptionalNestedMessage = value != nil
                    builderResult.optionalNestedMessage = value
                }
            }
            public var hasOptionalNestedMessage:Bool {
                get {
                    return builderResult.hasOptionalNestedMessage
                }
            }
            fileprivate var optionalNestedMessageBuilder_:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder! {
                didSet {
                    builderResult.hasOptionalNestedMessage = true
                }
            }
            public func getOptionalNestedMessageBuilder() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                if optionalNestedMessageBuilder_ == nil {
                    optionalNestedMessageBuilder_ = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                    builderResult.optionalNestedMessage = optionalNestedMessageBuilder_.getMessage()
                    if optionalNestedMessage != nil {
                        try! optionalNestedMessageBuilder_.mergeFrom(other: optionalNestedMessage)
                    }
                }
                return optionalNestedMessageBuilder_
            }
            @discardableResult
            public func setOptionalNestedMessage(_ value:ProtobufUnittest.TestAllTypesLite.NestedMessage!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalNestedMessage = value
                return self
            }
            @discardableResult
            public func mergeOptionalNestedMessage(value:ProtobufUnittest.TestAllTypesLite.NestedMessage) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalNestedMessage {
                    builderResult.optionalNestedMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.builderWithPrototype(prototype:builderResult.optionalNestedMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalNestedMessage = value
                }
                builderResult.hasOptionalNestedMessage = true
                return self
            }
            @discardableResult
            public func clearOptionalNestedMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalNestedMessageBuilder_ = nil
                builderResult.hasOptionalNestedMessage = false
                builderResult.optionalNestedMessage = nil
                return self
            }
            public var optionalForeignMessage:ProtobufUnittest.ForeignMessageLite! {
                get {
                    if optionalForeignMessageBuilder_ != nil {
                        builderResult.optionalForeignMessage = optionalForeignMessageBuilder_.getMessage()
                    }
                    return builderResult.optionalForeignMessage
                }
                set (value) {
                    builderResult.hasOptionalForeignMessage = value != nil
                    builderResult.optionalForeignMessage = value
                }
            }
            public var hasOptionalForeignMessage:Bool {
                get {
                    return builderResult.hasOptionalForeignMessage
                }
            }
            fileprivate var optionalForeignMessageBuilder_:ProtobufUnittest.ForeignMessageLite.Builder! {
                didSet {
                    builderResult.hasOptionalForeignMessage = true
                }
            }
            public func getOptionalForeignMessageBuilder() -> ProtobufUnittest.ForeignMessageLite.Builder {
                if optionalForeignMessageBuilder_ == nil {
                    optionalForeignMessageBuilder_ = ProtobufUnittest.ForeignMessageLite.Builder()
                    builderResult.optionalForeignMessage = optionalForeignMessageBuilder_.getMessage()
                    if optionalForeignMessage != nil {
                        try! optionalForeignMessageBuilder_.mergeFrom(other: optionalForeignMessage)
                    }
                }
                return optionalForeignMessageBuilder_
            }
            @discardableResult
            public func setOptionalForeignMessage(_ value:ProtobufUnittest.ForeignMessageLite!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalForeignMessage = value
                return self
            }
            @discardableResult
            public func mergeOptionalForeignMessage(value:ProtobufUnittest.ForeignMessageLite) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalForeignMessage {
                    builderResult.optionalForeignMessage = try ProtobufUnittest.ForeignMessageLite.builderWithPrototype(prototype:builderResult.optionalForeignMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalForeignMessage = value
                }
                builderResult.hasOptionalForeignMessage = true
                return self
            }
            @discardableResult
            public func clearOptionalForeignMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalForeignMessageBuilder_ = nil
                builderResult.hasOptionalForeignMessage = false
                builderResult.optionalForeignMessage = nil
                return self
            }
            public var optionalImportMessage:ProtobufUnittestImport.ImportMessageLite! {
                get {
                    if optionalImportMessageBuilder_ != nil {
                        builderResult.optionalImportMessage = optionalImportMessageBuilder_.getMessage()
                    }
                    return builderResult.optionalImportMessage
                }
                set (value) {
                    builderResult.hasOptionalImportMessage = value != nil
                    builderResult.optionalImportMessage = value
                }
            }
            public var hasOptionalImportMessage:Bool {
                get {
                    return builderResult.hasOptionalImportMessage
                }
            }
            fileprivate var optionalImportMessageBuilder_:ProtobufUnittestImport.ImportMessageLite.Builder! {
                didSet {
                    builderResult.hasOptionalImportMessage = true
                }
            }
            public func getOptionalImportMessageBuilder() -> ProtobufUnittestImport.ImportMessageLite.Builder {
                if optionalImportMessageBuilder_ == nil {
                    optionalImportMessageBuilder_ = ProtobufUnittestImport.ImportMessageLite.Builder()
                    builderResult.optionalImportMessage = optionalImportMessageBuilder_.getMessage()
                    if optionalImportMessage != nil {
                        try! optionalImportMessageBuilder_.mergeFrom(other: optionalImportMessage)
                    }
                }
                return optionalImportMessageBuilder_
            }
            @discardableResult
            public func setOptionalImportMessage(_ value:ProtobufUnittestImport.ImportMessageLite!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalImportMessage = value
                return self
            }
            @discardableResult
            public func mergeOptionalImportMessage(value:ProtobufUnittestImport.ImportMessageLite) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalImportMessage {
                    builderResult.optionalImportMessage = try ProtobufUnittestImport.ImportMessageLite.builderWithPrototype(prototype:builderResult.optionalImportMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalImportMessage = value
                }
                builderResult.hasOptionalImportMessage = true
                return self
            }
            @discardableResult
            public func clearOptionalImportMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalImportMessageBuilder_ = nil
                builderResult.hasOptionalImportMessage = false
                builderResult.optionalImportMessage = nil
                return self
            }
                public var optionalNestedEnum:ProtobufUnittest.TestAllTypesLite.NestedEnum {
                    get {
                        return builderResult.optionalNestedEnum
                    }
                    set (value) {
                        builderResult.hasOptionalNestedEnum = true
                        builderResult.optionalNestedEnum = value
                    }
                }
                public var hasOptionalNestedEnum:Bool{
                    get {
                        return builderResult.hasOptionalNestedEnum
                    }
                }
            @discardableResult
                public func setOptionalNestedEnum(_ value:ProtobufUnittest.TestAllTypesLite.NestedEnum) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.optionalNestedEnum = value
                  return self
                }
            @discardableResult
                public func clearOptionalNestedEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasOptionalNestedEnum = false
                   builderResult.optionalNestedEnum = .foo
                   return self
                }
                public var optionalForeignEnum:ProtobufUnittest.ForeignEnumLite {
                    get {
                        return builderResult.optionalForeignEnum
                    }
                    set (value) {
                        builderResult.hasOptionalForeignEnum = true
                        builderResult.optionalForeignEnum = value
                    }
                }
                public var hasOptionalForeignEnum:Bool{
                    get {
                        return builderResult.hasOptionalForeignEnum
                    }
                }
            @discardableResult
                public func setOptionalForeignEnum(_ value:ProtobufUnittest.ForeignEnumLite) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.optionalForeignEnum = value
                  return self
                }
            @discardableResult
                public func clearOptionalForeignEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasOptionalForeignEnum = false
                   builderResult.optionalForeignEnum = .foreignLiteFoo
                   return self
                }
                public var optionalImportEnum:ProtobufUnittestImport.ImportEnumLite {
                    get {
                        return builderResult.optionalImportEnum
                    }
                    set (value) {
                        builderResult.hasOptionalImportEnum = true
                        builderResult.optionalImportEnum = value
                    }
                }
                public var hasOptionalImportEnum:Bool{
                    get {
                        return builderResult.hasOptionalImportEnum
                    }
                }
            @discardableResult
                public func setOptionalImportEnum(_ value:ProtobufUnittestImport.ImportEnumLite) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.optionalImportEnum = value
                  return self
                }
            @discardableResult
                public func clearOptionalImportEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasOptionalImportEnum = false
                   builderResult.optionalImportEnum = .importLiteFoo
                   return self
                }
            public var optionalStringPiece:String {
                get {
                    return builderResult.optionalStringPiece
                }
                set (value) {
                    builderResult.hasOptionalStringPiece = true
                    builderResult.optionalStringPiece = value
                }
            }
            public var hasOptionalStringPiece:Bool {
                get {
                    return builderResult.hasOptionalStringPiece
                }
            }
            @discardableResult
            public func setOptionalStringPiece(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalStringPiece = value
                return self
            }
            @discardableResult
            public func clearOptionalStringPiece() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalStringPiece = false
                builderResult.optionalStringPiece = nil
                return self
            }
            public var optionalCord:String {
                get {
                    return builderResult.optionalCord
                }
                set (value) {
                    builderResult.hasOptionalCord = true
                    builderResult.optionalCord = value
                }
            }
            public var hasOptionalCord:Bool {
                get {
                    return builderResult.hasOptionalCord
                }
            }
            @discardableResult
            public func setOptionalCord(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalCord = value
                return self
            }
            @discardableResult
            public func clearOptionalCord() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOptionalCord = false
                builderResult.optionalCord = nil
                return self
            }
            /// Defined in unittest_import_public.proto
            public var optionalPublicImportMessage:ProtobufUnittestImport.PublicImportMessageLite! {
                get {
                    if optionalPublicImportMessageBuilder_ != nil {
                        builderResult.optionalPublicImportMessage = optionalPublicImportMessageBuilder_.getMessage()
                    }
                    return builderResult.optionalPublicImportMessage
                }
                set (value) {
                    builderResult.hasOptionalPublicImportMessage = value != nil
                    builderResult.optionalPublicImportMessage = value
                }
            }
            public var hasOptionalPublicImportMessage:Bool {
                get {
                    return builderResult.hasOptionalPublicImportMessage
                }
            }
            fileprivate var optionalPublicImportMessageBuilder_:ProtobufUnittestImport.PublicImportMessageLite.Builder! {
                didSet {
                    builderResult.hasOptionalPublicImportMessage = true
                }
            }
            public func getOptionalPublicImportMessageBuilder() -> ProtobufUnittestImport.PublicImportMessageLite.Builder {
                if optionalPublicImportMessageBuilder_ == nil {
                    optionalPublicImportMessageBuilder_ = ProtobufUnittestImport.PublicImportMessageLite.Builder()
                    builderResult.optionalPublicImportMessage = optionalPublicImportMessageBuilder_.getMessage()
                    if optionalPublicImportMessage != nil {
                        try! optionalPublicImportMessageBuilder_.mergeFrom(other: optionalPublicImportMessage)
                    }
                }
                return optionalPublicImportMessageBuilder_
            }
            @discardableResult
            public func setOptionalPublicImportMessage(_ value:ProtobufUnittestImport.PublicImportMessageLite!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalPublicImportMessage = value
                return self
            }
            @discardableResult
            public func mergeOptionalPublicImportMessage(value:ProtobufUnittestImport.PublicImportMessageLite) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalPublicImportMessage {
                    builderResult.optionalPublicImportMessage = try ProtobufUnittestImport.PublicImportMessageLite.builderWithPrototype(prototype:builderResult.optionalPublicImportMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalPublicImportMessage = value
                }
                builderResult.hasOptionalPublicImportMessage = true
                return self
            }
            @discardableResult
            public func clearOptionalPublicImportMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalPublicImportMessageBuilder_ = nil
                builderResult.hasOptionalPublicImportMessage = false
                builderResult.optionalPublicImportMessage = nil
                return self
            }
            public var optionalLazyMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage! {
                get {
                    if optionalLazyMessageBuilder_ != nil {
                        builderResult.optionalLazyMessage = optionalLazyMessageBuilder_.getMessage()
                    }
                    return builderResult.optionalLazyMessage
                }
                set (value) {
                    builderResult.hasOptionalLazyMessage = value != nil
                    builderResult.optionalLazyMessage = value
                }
            }
            public var hasOptionalLazyMessage:Bool {
                get {
                    return builderResult.hasOptionalLazyMessage
                }
            }
            fileprivate var optionalLazyMessageBuilder_:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder! {
                didSet {
                    builderResult.hasOptionalLazyMessage = true
                }
            }
            public func getOptionalLazyMessageBuilder() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                if optionalLazyMessageBuilder_ == nil {
                    optionalLazyMessageBuilder_ = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                    builderResult.optionalLazyMessage = optionalLazyMessageBuilder_.getMessage()
                    if optionalLazyMessage != nil {
                        try! optionalLazyMessageBuilder_.mergeFrom(other: optionalLazyMessage)
                    }
                }
                return optionalLazyMessageBuilder_
            }
            @discardableResult
            public func setOptionalLazyMessage(_ value:ProtobufUnittest.TestAllTypesLite.NestedMessage!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.optionalLazyMessage = value
                return self
            }
            @discardableResult
            public func mergeOptionalLazyMessage(value:ProtobufUnittest.TestAllTypesLite.NestedMessage) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOptionalLazyMessage {
                    builderResult.optionalLazyMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.builderWithPrototype(prototype:builderResult.optionalLazyMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalLazyMessage = value
                }
                builderResult.hasOptionalLazyMessage = true
                return self
            }
            @discardableResult
            public func clearOptionalLazyMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                optionalLazyMessageBuilder_ = nil
                builderResult.hasOptionalLazyMessage = false
                builderResult.optionalLazyMessage = nil
                return self
            }
            /// Repeated
            public var repeatedInt32:Array<Int32> {
                get {
                    return builderResult.repeatedInt32
                }
                set (array) {
                    builderResult.repeatedInt32 = array
                }
            }
            @discardableResult
            public func setRepeatedInt32(_ value:Array<Int32>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedInt32 = value
                return self
            }
            @discardableResult
            public func clearRepeatedInt32() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedInt32.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedInt64:Array<Int64> {
                get {
                    return builderResult.repeatedInt64
                }
                set (array) {
                    builderResult.repeatedInt64 = array
                }
            }
            @discardableResult
            public func setRepeatedInt64(_ value:Array<Int64>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedInt64 = value
                return self
            }
            @discardableResult
            public func clearRepeatedInt64() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedInt64.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedUint32:Array<UInt32> {
                get {
                    return builderResult.repeatedUint32
                }
                set (array) {
                    builderResult.repeatedUint32 = array
                }
            }
            @discardableResult
            public func setRepeatedUint32(_ value:Array<UInt32>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedUint32 = value
                return self
            }
            @discardableResult
            public func clearRepeatedUint32() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedUint32.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedUint64:Array<UInt64> {
                get {
                    return builderResult.repeatedUint64
                }
                set (array) {
                    builderResult.repeatedUint64 = array
                }
            }
            @discardableResult
            public func setRepeatedUint64(_ value:Array<UInt64>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedUint64 = value
                return self
            }
            @discardableResult
            public func clearRepeatedUint64() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedUint64.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedSint32:Array<Int32> {
                get {
                    return builderResult.repeatedSint32
                }
                set (array) {
                    builderResult.repeatedSint32 = array
                }
            }
            @discardableResult
            public func setRepeatedSint32(_ value:Array<Int32>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedSint32 = value
                return self
            }
            @discardableResult
            public func clearRepeatedSint32() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedSint32.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedSint64:Array<Int64> {
                get {
                    return builderResult.repeatedSint64
                }
                set (array) {
                    builderResult.repeatedSint64 = array
                }
            }
            @discardableResult
            public func setRepeatedSint64(_ value:Array<Int64>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedSint64 = value
                return self
            }
            @discardableResult
            public func clearRepeatedSint64() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedSint64.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedFixed32:Array<UInt32> {
                get {
                    return builderResult.repeatedFixed32
                }
                set (array) {
                    builderResult.repeatedFixed32 = array
                }
            }
            @discardableResult
            public func setRepeatedFixed32(_ value:Array<UInt32>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedFixed32 = value
                return self
            }
            @discardableResult
            public func clearRepeatedFixed32() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedFixed32.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedFixed64:Array<UInt64> {
                get {
                    return builderResult.repeatedFixed64
                }
                set (array) {
                    builderResult.repeatedFixed64 = array
                }
            }
            @discardableResult
            public func setRepeatedFixed64(_ value:Array<UInt64>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedFixed64 = value
                return self
            }
            @discardableResult
            public func clearRepeatedFixed64() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedFixed64.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedSfixed32:Array<Int32> {
                get {
                    return builderResult.repeatedSfixed32
                }
                set (array) {
                    builderResult.repeatedSfixed32 = array
                }
            }
            @discardableResult
            public func setRepeatedSfixed32(_ value:Array<Int32>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedSfixed32 = value
                return self
            }
            @discardableResult
            public func clearRepeatedSfixed32() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedSfixed32.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedSfixed64:Array<Int64> {
                get {
                    return builderResult.repeatedSfixed64
                }
                set (array) {
                    builderResult.repeatedSfixed64 = array
                }
            }
            @discardableResult
            public func setRepeatedSfixed64(_ value:Array<Int64>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedSfixed64 = value
                return self
            }
            @discardableResult
            public func clearRepeatedSfixed64() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedSfixed64.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedFloat:Array<Float> {
                get {
                    return builderResult.repeatedFloat
                }
                set (array) {
                    builderResult.repeatedFloat = array
                }
            }
            @discardableResult
            public func setRepeatedFloat(_ value:Array<Float>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedFloat = value
                return self
            }
            @discardableResult
            public func clearRepeatedFloat() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedFloat.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedDouble:Array<Double> {
                get {
                    return builderResult.repeatedDouble
                }
                set (array) {
                    builderResult.repeatedDouble = array
                }
            }
            @discardableResult
            public func setRepeatedDouble(_ value:Array<Double>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedDouble = value
                return self
            }
            @discardableResult
            public func clearRepeatedDouble() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedDouble.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedBool:Array<Bool> {
                get {
                    return builderResult.repeatedBool
                }
                set (array) {
                    builderResult.repeatedBool = array
                }
            }
            @discardableResult
            public func setRepeatedBool(_ value:Array<Bool>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedBool = value
                return self
            }
            @discardableResult
            public func clearRepeatedBool() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedBool.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedString:Array<String> {
                get {
                    return builderResult.repeatedString
                }
                set (array) {
                    builderResult.repeatedString = array
                }
            }
            @discardableResult
            public func setRepeatedString(_ value:Array<String>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedString = value
                return self
            }
            @discardableResult
            public func clearRepeatedString() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedString.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedBytes:Array<Data> {
                get {
                    return builderResult.repeatedBytes
                }
                set (array) {
                    builderResult.repeatedBytes = array
                }
            }
            @discardableResult
            public func setRepeatedBytes(_ value:Array<Data>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedBytes = value
                return self
            }
            @discardableResult
            public func clearRepeatedBytes() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedBytes.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedGroup:Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup> {
                get {
                    return builderResult.repeatedGroup
                }
                set (value) {
                    builderResult.repeatedGroup = value
                }
            }
            @discardableResult
            public func setRepeatedGroup(_ value:Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedGroup = value
                return self
            }
            @discardableResult
            public func clearRepeatedGroup() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedGroup.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedNestedMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> {
                get {
                    return builderResult.repeatedNestedMessage
                }
                set (value) {
                    builderResult.repeatedNestedMessage = value
                }
            }
            @discardableResult
            public func setRepeatedNestedMessage(_ value:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedNestedMessage = value
                return self
            }
            @discardableResult
            public func clearRepeatedNestedMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedNestedMessage.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedForeignMessage:Array<ProtobufUnittest.ForeignMessageLite> {
                get {
                    return builderResult.repeatedForeignMessage
                }
                set (value) {
                    builderResult.repeatedForeignMessage = value
                }
            }
            @discardableResult
            public func setRepeatedForeignMessage(_ value:Array<ProtobufUnittest.ForeignMessageLite>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedForeignMessage = value
                return self
            }
            @discardableResult
            public func clearRepeatedForeignMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedForeignMessage.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedImportMessage:Array<ProtobufUnittestImport.ImportMessageLite> {
                get {
                    return builderResult.repeatedImportMessage
                }
                set (value) {
                    builderResult.repeatedImportMessage = value
                }
            }
            @discardableResult
            public func setRepeatedImportMessage(_ value:Array<ProtobufUnittestImport.ImportMessageLite>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedImportMessage = value
                return self
            }
            @discardableResult
            public func clearRepeatedImportMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedImportMessage.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedNestedEnum:Array<ProtobufUnittest.TestAllTypesLite.NestedEnum> {
                get {
                    return builderResult.repeatedNestedEnum
                }
                set (value) {
                    builderResult.repeatedNestedEnum = value
                }
            }
            @discardableResult
            public func setRepeatedNestedEnum(_ value:Array<ProtobufUnittest.TestAllTypesLite.NestedEnum>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedNestedEnum = value
                return self
            }
            @discardableResult
            public func clearRepeatedNestedEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedNestedEnum.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedForeignEnum:Array<ProtobufUnittest.ForeignEnumLite> {
                get {
                    return builderResult.repeatedForeignEnum
                }
                set (value) {
                    builderResult.repeatedForeignEnum = value
                }
            }
            @discardableResult
            public func setRepeatedForeignEnum(_ value:Array<ProtobufUnittest.ForeignEnumLite>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedForeignEnum = value
                return self
            }
            @discardableResult
            public func clearRepeatedForeignEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedForeignEnum.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedImportEnum:Array<ProtobufUnittestImport.ImportEnumLite> {
                get {
                    return builderResult.repeatedImportEnum
                }
                set (value) {
                    builderResult.repeatedImportEnum = value
                }
            }
            @discardableResult
            public func setRepeatedImportEnum(_ value:Array<ProtobufUnittestImport.ImportEnumLite>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedImportEnum = value
                return self
            }
            @discardableResult
            public func clearRepeatedImportEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedImportEnum.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedStringPiece:Array<String> {
                get {
                    return builderResult.repeatedStringPiece
                }
                set (array) {
                    builderResult.repeatedStringPiece = array
                }
            }
            @discardableResult
            public func setRepeatedStringPiece(_ value:Array<String>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedStringPiece = value
                return self
            }
            @discardableResult
            public func clearRepeatedStringPiece() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedStringPiece.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedCord:Array<String> {
                get {
                    return builderResult.repeatedCord
                }
                set (array) {
                    builderResult.repeatedCord = array
                }
            }
            @discardableResult
            public func setRepeatedCord(_ value:Array<String>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedCord = value
                return self
            }
            @discardableResult
            public func clearRepeatedCord() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedCord.removeAll(keepingCapacity: false)
                return self
            }
            public var repeatedLazyMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> {
                get {
                    return builderResult.repeatedLazyMessage
                }
                set (value) {
                    builderResult.repeatedLazyMessage = value
                }
            }
            @discardableResult
            public func setRepeatedLazyMessage(_ value:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.repeatedLazyMessage = value
                return self
            }
            @discardableResult
            public func clearRepeatedLazyMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult.repeatedLazyMessage.removeAll(keepingCapacity: false)
                return self
            }
            /// Singular with defaults
            public var defaultInt32:Int32 {
                get {
                    return builderResult.defaultInt32
                }
                set (value) {
                    builderResult.hasDefaultInt32 = true
                    builderResult.defaultInt32 = value
                }
            }
            public var hasDefaultInt32:Bool {
                get {
                    return builderResult.hasDefaultInt32
                }
            }
            @discardableResult
            public func setDefaultInt32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultInt32 = value
                return self
            }
            @discardableResult
            public func clearDefaultInt32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultInt32 = false
                builderResult.defaultInt32 = Int32(41)
                return self
            }
            public var defaultInt64:Int64 {
                get {
                    return builderResult.defaultInt64
                }
                set (value) {
                    builderResult.hasDefaultInt64 = true
                    builderResult.defaultInt64 = value
                }
            }
            public var hasDefaultInt64:Bool {
                get {
                    return builderResult.hasDefaultInt64
                }
            }
            @discardableResult
            public func setDefaultInt64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultInt64 = value
                return self
            }
            @discardableResult
            public func clearDefaultInt64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultInt64 = false
                builderResult.defaultInt64 = Int64(42)
                return self
            }
            public var defaultUint32:UInt32 {
                get {
                    return builderResult.defaultUint32
                }
                set (value) {
                    builderResult.hasDefaultUint32 = true
                    builderResult.defaultUint32 = value
                }
            }
            public var hasDefaultUint32:Bool {
                get {
                    return builderResult.hasDefaultUint32
                }
            }
            @discardableResult
            public func setDefaultUint32(_ value:UInt32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultUint32 = value
                return self
            }
            @discardableResult
            public func clearDefaultUint32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultUint32 = false
                builderResult.defaultUint32 = UInt32(43)
                return self
            }
            public var defaultUint64:UInt64 {
                get {
                    return builderResult.defaultUint64
                }
                set (value) {
                    builderResult.hasDefaultUint64 = true
                    builderResult.defaultUint64 = value
                }
            }
            public var hasDefaultUint64:Bool {
                get {
                    return builderResult.hasDefaultUint64
                }
            }
            @discardableResult
            public func setDefaultUint64(_ value:UInt64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultUint64 = value
                return self
            }
            @discardableResult
            public func clearDefaultUint64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultUint64 = false
                builderResult.defaultUint64 = UInt64(44)
                return self
            }
            public var defaultSint32:Int32 {
                get {
                    return builderResult.defaultSint32
                }
                set (value) {
                    builderResult.hasDefaultSint32 = true
                    builderResult.defaultSint32 = value
                }
            }
            public var hasDefaultSint32:Bool {
                get {
                    return builderResult.hasDefaultSint32
                }
            }
            @discardableResult
            public func setDefaultSint32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultSint32 = value
                return self
            }
            @discardableResult
            public func clearDefaultSint32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultSint32 = false
                builderResult.defaultSint32 = Int32(-45)
                return self
            }
            public var defaultSint64:Int64 {
                get {
                    return builderResult.defaultSint64
                }
                set (value) {
                    builderResult.hasDefaultSint64 = true
                    builderResult.defaultSint64 = value
                }
            }
            public var hasDefaultSint64:Bool {
                get {
                    return builderResult.hasDefaultSint64
                }
            }
            @discardableResult
            public func setDefaultSint64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultSint64 = value
                return self
            }
            @discardableResult
            public func clearDefaultSint64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultSint64 = false
                builderResult.defaultSint64 = Int64(46)
                return self
            }
            public var defaultFixed32:UInt32 {
                get {
                    return builderResult.defaultFixed32
                }
                set (value) {
                    builderResult.hasDefaultFixed32 = true
                    builderResult.defaultFixed32 = value
                }
            }
            public var hasDefaultFixed32:Bool {
                get {
                    return builderResult.hasDefaultFixed32
                }
            }
            @discardableResult
            public func setDefaultFixed32(_ value:UInt32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultFixed32 = value
                return self
            }
            @discardableResult
            public func clearDefaultFixed32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultFixed32 = false
                builderResult.defaultFixed32 = UInt32(47)
                return self
            }
            public var defaultFixed64:UInt64 {
                get {
                    return builderResult.defaultFixed64
                }
                set (value) {
                    builderResult.hasDefaultFixed64 = true
                    builderResult.defaultFixed64 = value
                }
            }
            public var hasDefaultFixed64:Bool {
                get {
                    return builderResult.hasDefaultFixed64
                }
            }
            @discardableResult
            public func setDefaultFixed64(_ value:UInt64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultFixed64 = value
                return self
            }
            @discardableResult
            public func clearDefaultFixed64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultFixed64 = false
                builderResult.defaultFixed64 = UInt64(48)
                return self
            }
            public var defaultSfixed32:Int32 {
                get {
                    return builderResult.defaultSfixed32
                }
                set (value) {
                    builderResult.hasDefaultSfixed32 = true
                    builderResult.defaultSfixed32 = value
                }
            }
            public var hasDefaultSfixed32:Bool {
                get {
                    return builderResult.hasDefaultSfixed32
                }
            }
            @discardableResult
            public func setDefaultSfixed32(_ value:Int32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultSfixed32 = value
                return self
            }
            @discardableResult
            public func clearDefaultSfixed32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultSfixed32 = false
                builderResult.defaultSfixed32 = Int32(49)
                return self
            }
            public var defaultSfixed64:Int64 {
                get {
                    return builderResult.defaultSfixed64
                }
                set (value) {
                    builderResult.hasDefaultSfixed64 = true
                    builderResult.defaultSfixed64 = value
                }
            }
            public var hasDefaultSfixed64:Bool {
                get {
                    return builderResult.hasDefaultSfixed64
                }
            }
            @discardableResult
            public func setDefaultSfixed64(_ value:Int64) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultSfixed64 = value
                return self
            }
            @discardableResult
            public func clearDefaultSfixed64() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultSfixed64 = false
                builderResult.defaultSfixed64 = Int64(-50)
                return self
            }
            public var defaultFloat:Float {
                get {
                    return builderResult.defaultFloat
                }
                set (value) {
                    builderResult.hasDefaultFloat = true
                    builderResult.defaultFloat = value
                }
            }
            public var hasDefaultFloat:Bool {
                get {
                    return builderResult.hasDefaultFloat
                }
            }
            @discardableResult
            public func setDefaultFloat(_ value:Float) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultFloat = value
                return self
            }
            @discardableResult
            public func clearDefaultFloat() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultFloat = false
                builderResult.defaultFloat = Float(51.5)
                return self
            }
            public var defaultDouble:Double {
                get {
                    return builderResult.defaultDouble
                }
                set (value) {
                    builderResult.hasDefaultDouble = true
                    builderResult.defaultDouble = value
                }
            }
            public var hasDefaultDouble:Bool {
                get {
                    return builderResult.hasDefaultDouble
                }
            }
            @discardableResult
            public func setDefaultDouble(_ value:Double) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultDouble = value
                return self
            }
            @discardableResult
            public func clearDefaultDouble() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultDouble = false
                builderResult.defaultDouble = Double(52000)
                return self
            }
            public var defaultBool:Bool {
                get {
                    return builderResult.defaultBool
                }
                set (value) {
                    builderResult.hasDefaultBool = true
                    builderResult.defaultBool = value
                }
            }
            public var hasDefaultBool:Bool {
                get {
                    return builderResult.hasDefaultBool
                }
            }
            @discardableResult
            public func setDefaultBool(_ value:Bool) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultBool = value
                return self
            }
            @discardableResult
            public func clearDefaultBool() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultBool = false
                builderResult.defaultBool = true
                return self
            }
            public var defaultString:String {
                get {
                    return builderResult.defaultString
                }
                set (value) {
                    builderResult.hasDefaultString = true
                    builderResult.defaultString = value
                }
            }
            public var hasDefaultString:Bool {
                get {
                    return builderResult.hasDefaultString
                }
            }
            @discardableResult
            public func setDefaultString(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultString = value
                return self
            }
            @discardableResult
            public func clearDefaultString() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultString = false
                builderResult.defaultString = "hello"
                return self
            }
            public var defaultBytes:Data {
                get {
                    return builderResult.defaultBytes
                }
                set (value) {
                    builderResult.hasDefaultBytes = true
                    builderResult.defaultBytes = value
                }
            }
            public var hasDefaultBytes:Bool {
                get {
                    return builderResult.hasDefaultBytes
                }
            }
            @discardableResult
            public func setDefaultBytes(_ value:Data) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultBytes = value
                return self
            }
            @discardableResult
            public func clearDefaultBytes() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultBytes = false
                builderResult.defaultBytes = Data(bytes:([UInt8]() + "world".utf8), count:5)
                return self
            }
                public var defaultNestedEnum:ProtobufUnittest.TestAllTypesLite.NestedEnum {
                    get {
                        return builderResult.defaultNestedEnum
                    }
                    set (value) {
                        builderResult.hasDefaultNestedEnum = true
                        builderResult.defaultNestedEnum = value
                    }
                }
                public var hasDefaultNestedEnum:Bool{
                    get {
                        return builderResult.hasDefaultNestedEnum
                    }
                }
            @discardableResult
                public func setDefaultNestedEnum(_ value:ProtobufUnittest.TestAllTypesLite.NestedEnum) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.defaultNestedEnum = value
                  return self
                }
            @discardableResult
                public func clearDefaultNestedEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasDefaultNestedEnum = false
                   builderResult.defaultNestedEnum = .bar
                   return self
                }
                public var defaultForeignEnum:ProtobufUnittest.ForeignEnumLite {
                    get {
                        return builderResult.defaultForeignEnum
                    }
                    set (value) {
                        builderResult.hasDefaultForeignEnum = true
                        builderResult.defaultForeignEnum = value
                    }
                }
                public var hasDefaultForeignEnum:Bool{
                    get {
                        return builderResult.hasDefaultForeignEnum
                    }
                }
            @discardableResult
                public func setDefaultForeignEnum(_ value:ProtobufUnittest.ForeignEnumLite) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.defaultForeignEnum = value
                  return self
                }
            @discardableResult
                public func clearDefaultForeignEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasDefaultForeignEnum = false
                   builderResult.defaultForeignEnum = .foreignLiteBar
                   return self
                }
                public var defaultImportEnum:ProtobufUnittestImport.ImportEnumLite {
                    get {
                        return builderResult.defaultImportEnum
                    }
                    set (value) {
                        builderResult.hasDefaultImportEnum = true
                        builderResult.defaultImportEnum = value
                    }
                }
                public var hasDefaultImportEnum:Bool{
                    get {
                        return builderResult.hasDefaultImportEnum
                    }
                }
            @discardableResult
                public func setDefaultImportEnum(_ value:ProtobufUnittestImport.ImportEnumLite) -> ProtobufUnittest.TestAllTypesLite.Builder {
                  self.defaultImportEnum = value
                  return self
                }
            @discardableResult
                public func clearDefaultImportEnum() -> ProtobufUnittest.TestAllTypesLite.Builder {
                   builderResult.hasDefaultImportEnum = false
                   builderResult.defaultImportEnum = .importLiteBar
                   return self
                }
            public var defaultStringPiece:String {
                get {
                    return builderResult.defaultStringPiece
                }
                set (value) {
                    builderResult.hasDefaultStringPiece = true
                    builderResult.defaultStringPiece = value
                }
            }
            public var hasDefaultStringPiece:Bool {
                get {
                    return builderResult.hasDefaultStringPiece
                }
            }
            @discardableResult
            public func setDefaultStringPiece(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultStringPiece = value
                return self
            }
            @discardableResult
            public func clearDefaultStringPiece() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultStringPiece = false
                builderResult.defaultStringPiece = "abc"
                return self
            }
            public var defaultCord:String {
                get {
                    return builderResult.defaultCord
                }
                set (value) {
                    builderResult.hasDefaultCord = true
                    builderResult.defaultCord = value
                }
            }
            public var hasDefaultCord:Bool {
                get {
                    return builderResult.hasDefaultCord
                }
            }
            @discardableResult
            public func setDefaultCord(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.defaultCord = value
                return self
            }
            @discardableResult
            public func clearDefaultCord() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasDefaultCord = false
                builderResult.defaultCord = "123"
                return self
            }
            public var oneofUint32:UInt32 {
                get {
                    return builderResult.oneofUint32
                }
                set (value) {
                    builderResult.hasOneofUint32 = true
                    builderResult.oneofUint32 = value
                }
            }
            public var hasOneofUint32:Bool {
                get {
                    return builderResult.hasOneofUint32
                }
            }
            @discardableResult
            public func setOneofUint32(_ value:UInt32) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.oneofUint32 = value
                return self
            }
            @discardableResult
            public func clearOneofUint32() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOneofUint32 = false
                builderResult.oneofUint32 = nil
                return self
            }
            public var oneofNestedMessage:ProtobufUnittest.TestAllTypesLite.NestedMessage! {
                get {
                    if oneofNestedMessageBuilder_ != nil {
                        builderResult.oneofNestedMessage = oneofNestedMessageBuilder_.getMessage()
                    }
                    return builderResult.oneofNestedMessage
                }
                set (value) {
                    builderResult.hasOneofNestedMessage = value != nil
                    builderResult.oneofNestedMessage = value
                }
            }
            public var hasOneofNestedMessage:Bool {
                get {
                    return builderResult.hasOneofNestedMessage
                }
            }
            fileprivate var oneofNestedMessageBuilder_:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder! {
                didSet {
                    builderResult.hasOneofNestedMessage = true
                }
            }
            public func getOneofNestedMessageBuilder() -> ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder {
                if oneofNestedMessageBuilder_ == nil {
                    oneofNestedMessageBuilder_ = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                    builderResult.oneofNestedMessage = oneofNestedMessageBuilder_.getMessage()
                    if oneofNestedMessage != nil {
                        try! oneofNestedMessageBuilder_.mergeFrom(other: oneofNestedMessage)
                    }
                }
                return oneofNestedMessageBuilder_
            }
            @discardableResult
            public func setOneofNestedMessage(_ value:ProtobufUnittest.TestAllTypesLite.NestedMessage!) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.oneofNestedMessage = value
                return self
            }
            @discardableResult
            public func mergeOneofNestedMessage(value:ProtobufUnittest.TestAllTypesLite.NestedMessage) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if builderResult.hasOneofNestedMessage {
                    builderResult.oneofNestedMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.builderWithPrototype(prototype:builderResult.oneofNestedMessage).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.oneofNestedMessage = value
                }
                builderResult.hasOneofNestedMessage = true
                return self
            }
            @discardableResult
            public func clearOneofNestedMessage() -> ProtobufUnittest.TestAllTypesLite.Builder {
                oneofNestedMessageBuilder_ = nil
                builderResult.hasOneofNestedMessage = false
                builderResult.oneofNestedMessage = nil
                return self
            }
            public var oneofString:String {
                get {
                    return builderResult.oneofString
                }
                set (value) {
                    builderResult.hasOneofString = true
                    builderResult.oneofString = value
                }
            }
            public var hasOneofString:Bool {
                get {
                    return builderResult.hasOneofString
                }
            }
            @discardableResult
            public func setOneofString(_ value:String) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.oneofString = value
                return self
            }
            @discardableResult
            public func clearOneofString() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOneofString = false
                builderResult.oneofString = nil
                return self
            }
            public var oneofBytes:Data {
                get {
                    return builderResult.oneofBytes
                }
                set (value) {
                    builderResult.hasOneofBytes = true
                    builderResult.oneofBytes = value
                }
            }
            public var hasOneofBytes:Bool {
                get {
                    return builderResult.hasOneofBytes
                }
            }
            @discardableResult
            public func setOneofBytes(_ value:Data) -> ProtobufUnittest.TestAllTypesLite.Builder {
                self.oneofBytes = value
                return self
            }
            @discardableResult
            public func clearOneofBytes() -> ProtobufUnittest.TestAllTypesLite.Builder{
                builderResult.hasOneofBytes = false
                builderResult.oneofBytes = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestAllTypesLite.Builder {
                builderResult = ProtobufUnittest.TestAllTypesLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                return try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestAllTypesLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestAllTypesLite {
                let returnMe:ProtobufUnittest.TestAllTypesLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                if other == ProtobufUnittest.TestAllTypesLite() {
                    return self
                }
                if other.hasOptionalInt32 {
                    optionalInt32 = other.optionalInt32
                }
                if other.hasOptionalInt64 {
                    optionalInt64 = other.optionalInt64
                }
                if other.hasOptionalUint32 {
                    optionalUint32 = other.optionalUint32
                }
                if other.hasOptionalUint64 {
                    optionalUint64 = other.optionalUint64
                }
                if other.hasOptionalSint32 {
                    optionalSint32 = other.optionalSint32
                }
                if other.hasOptionalSint64 {
                    optionalSint64 = other.optionalSint64
                }
                if other.hasOptionalFixed32 {
                    optionalFixed32 = other.optionalFixed32
                }
                if other.hasOptionalFixed64 {
                    optionalFixed64 = other.optionalFixed64
                }
                if other.hasOptionalSfixed32 {
                    optionalSfixed32 = other.optionalSfixed32
                }
                if other.hasOptionalSfixed64 {
                    optionalSfixed64 = other.optionalSfixed64
                }
                if other.hasOptionalFloat {
                    optionalFloat = other.optionalFloat
                }
                if other.hasOptionalDouble {
                    optionalDouble = other.optionalDouble
                }
                if other.hasOptionalBool {
                    optionalBool = other.optionalBool
                }
                if other.hasOptionalString {
                    optionalString = other.optionalString
                }
                if other.hasOptionalBytes {
                    optionalBytes = other.optionalBytes
                }
                if (other.hasOptionalGroup) {
                    try mergeOptionalGroup(value: other.optionalGroup)
                }
                if (other.hasOptionalNestedMessage) {
                    try mergeOptionalNestedMessage(value: other.optionalNestedMessage)
                }
                if (other.hasOptionalForeignMessage) {
                    try mergeOptionalForeignMessage(value: other.optionalForeignMessage)
                }
                if (other.hasOptionalImportMessage) {
                    try mergeOptionalImportMessage(value: other.optionalImportMessage)
                }
                if other.hasOptionalNestedEnum {
                    optionalNestedEnum = other.optionalNestedEnum
                }
                if other.hasOptionalForeignEnum {
                    optionalForeignEnum = other.optionalForeignEnum
                }
                if other.hasOptionalImportEnum {
                    optionalImportEnum = other.optionalImportEnum
                }
                if other.hasOptionalStringPiece {
                    optionalStringPiece = other.optionalStringPiece
                }
                if other.hasOptionalCord {
                    optionalCord = other.optionalCord
                }
                if (other.hasOptionalPublicImportMessage) {
                    try mergeOptionalPublicImportMessage(value: other.optionalPublicImportMessage)
                }
                if (other.hasOptionalLazyMessage) {
                    try mergeOptionalLazyMessage(value: other.optionalLazyMessage)
                }
                if !other.repeatedInt32.isEmpty {
                    builderResult.repeatedInt32 += other.repeatedInt32
                }
                if !other.repeatedInt64.isEmpty {
                    builderResult.repeatedInt64 += other.repeatedInt64
                }
                if !other.repeatedUint32.isEmpty {
                    builderResult.repeatedUint32 += other.repeatedUint32
                }
                if !other.repeatedUint64.isEmpty {
                    builderResult.repeatedUint64 += other.repeatedUint64
                }
                if !other.repeatedSint32.isEmpty {
                    builderResult.repeatedSint32 += other.repeatedSint32
                }
                if !other.repeatedSint64.isEmpty {
                    builderResult.repeatedSint64 += other.repeatedSint64
                }
                if !other.repeatedFixed32.isEmpty {
                    builderResult.repeatedFixed32 += other.repeatedFixed32
                }
                if !other.repeatedFixed64.isEmpty {
                    builderResult.repeatedFixed64 += other.repeatedFixed64
                }
                if !other.repeatedSfixed32.isEmpty {
                    builderResult.repeatedSfixed32 += other.repeatedSfixed32
                }
                if !other.repeatedSfixed64.isEmpty {
                    builderResult.repeatedSfixed64 += other.repeatedSfixed64
                }
                if !other.repeatedFloat.isEmpty {
                    builderResult.repeatedFloat += other.repeatedFloat
                }
                if !other.repeatedDouble.isEmpty {
                    builderResult.repeatedDouble += other.repeatedDouble
                }
                if !other.repeatedBool.isEmpty {
                    builderResult.repeatedBool += other.repeatedBool
                }
                if !other.repeatedString.isEmpty {
                    builderResult.repeatedString += other.repeatedString
                }
                if !other.repeatedBytes.isEmpty {
                    builderResult.repeatedBytes += other.repeatedBytes
                }
                if !other.repeatedGroup.isEmpty  {
                     builderResult.repeatedGroup += other.repeatedGroup
                }
                if !other.repeatedNestedMessage.isEmpty  {
                     builderResult.repeatedNestedMessage += other.repeatedNestedMessage
                }
                if !other.repeatedForeignMessage.isEmpty  {
                     builderResult.repeatedForeignMessage += other.repeatedForeignMessage
                }
                if !other.repeatedImportMessage.isEmpty  {
                     builderResult.repeatedImportMessage += other.repeatedImportMessage
                }
                if !other.repeatedNestedEnum.isEmpty {
                     builderResult.repeatedNestedEnum += other.repeatedNestedEnum
                }
                if !other.repeatedForeignEnum.isEmpty {
                     builderResult.repeatedForeignEnum += other.repeatedForeignEnum
                }
                if !other.repeatedImportEnum.isEmpty {
                     builderResult.repeatedImportEnum += other.repeatedImportEnum
                }
                if !other.repeatedStringPiece.isEmpty {
                    builderResult.repeatedStringPiece += other.repeatedStringPiece
                }
                if !other.repeatedCord.isEmpty {
                    builderResult.repeatedCord += other.repeatedCord
                }
                if !other.repeatedLazyMessage.isEmpty  {
                     builderResult.repeatedLazyMessage += other.repeatedLazyMessage
                }
                if other.hasDefaultInt32 {
                    defaultInt32 = other.defaultInt32
                }
                if other.hasDefaultInt64 {
                    defaultInt64 = other.defaultInt64
                }
                if other.hasDefaultUint32 {
                    defaultUint32 = other.defaultUint32
                }
                if other.hasDefaultUint64 {
                    defaultUint64 = other.defaultUint64
                }
                if other.hasDefaultSint32 {
                    defaultSint32 = other.defaultSint32
                }
                if other.hasDefaultSint64 {
                    defaultSint64 = other.defaultSint64
                }
                if other.hasDefaultFixed32 {
                    defaultFixed32 = other.defaultFixed32
                }
                if other.hasDefaultFixed64 {
                    defaultFixed64 = other.defaultFixed64
                }
                if other.hasDefaultSfixed32 {
                    defaultSfixed32 = other.defaultSfixed32
                }
                if other.hasDefaultSfixed64 {
                    defaultSfixed64 = other.defaultSfixed64
                }
                if other.hasDefaultFloat {
                    defaultFloat = other.defaultFloat
                }
                if other.hasDefaultDouble {
                    defaultDouble = other.defaultDouble
                }
                if other.hasDefaultBool {
                    defaultBool = other.defaultBool
                }
                if other.hasDefaultString {
                    defaultString = other.defaultString
                }
                if other.hasDefaultBytes {
                    defaultBytes = other.defaultBytes
                }
                if other.hasDefaultNestedEnum {
                    defaultNestedEnum = other.defaultNestedEnum
                }
                if other.hasDefaultForeignEnum {
                    defaultForeignEnum = other.defaultForeignEnum
                }
                if other.hasDefaultImportEnum {
                    defaultImportEnum = other.defaultImportEnum
                }
                if other.hasDefaultStringPiece {
                    defaultStringPiece = other.defaultStringPiece
                }
                if other.hasDefaultCord {
                    defaultCord = other.defaultCord
                }
                if other.hasOneofUint32 {
                    oneofUint32 = other.oneofUint32
                }
                if (other.hasOneofNestedMessage) {
                    try mergeOneofNestedMessage(value: other.oneofNestedMessage)
                }
                if other.hasOneofString {
                    oneofString = other.oneofString
                }
                if other.hasOneofBytes {
                    oneofBytes = other.oneofBytes
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.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 8:
                        optionalInt32 = try codedInputStream.readInt32()

                    case 16:
                        optionalInt64 = try codedInputStream.readInt64()

                    case 24:
                        optionalUint32 = try codedInputStream.readUInt32()

                    case 32:
                        optionalUint64 = try codedInputStream.readUInt64()

                    case 40:
                        optionalSint32 = try codedInputStream.readSInt32()

                    case 48:
                        optionalSint64 = try codedInputStream.readSInt64()

                    case 61:
                        optionalFixed32 = try codedInputStream.readFixed32()

                    case 65:
                        optionalFixed64 = try codedInputStream.readFixed64()

                    case 77:
                        optionalSfixed32 = try codedInputStream.readSFixed32()

                    case 81:
                        optionalSfixed64 = try codedInputStream.readSFixed64()

                    case 93:
                        optionalFloat = try codedInputStream.readFloat()

                    case 97:
                        optionalDouble = try codedInputStream.readDouble()

                    case 104:
                        optionalBool = try codedInputStream.readBool()

                    case 114:
                        optionalString = try codedInputStream.readString()

                    case 122:
                        optionalBytes = try codedInputStream.readData()

                    case 131:
                        let subBuilder:ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder = ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder()
                        if hasOptionalGroup {
                            try subBuilder.mergeFrom(other: optionalGroup)
                        }
                        try codedInputStream.readGroup(fieldNumber: 16, builder:subBuilder, extensionRegistry:extensionRegistry)
                        optionalGroup = subBuilder.buildPartial()

                    case 146:
                        let subBuilder:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                        if hasOptionalNestedMessage {
                            try subBuilder.mergeFrom(other: optionalNestedMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalNestedMessage = subBuilder.buildPartial()

                    case 154:
                        let subBuilder:ProtobufUnittest.ForeignMessageLite.Builder = ProtobufUnittest.ForeignMessageLite.Builder()
                        if hasOptionalForeignMessage {
                            try subBuilder.mergeFrom(other: optionalForeignMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalForeignMessage = subBuilder.buildPartial()

                    case 162:
                        let subBuilder:ProtobufUnittestImport.ImportMessageLite.Builder = ProtobufUnittestImport.ImportMessageLite.Builder()
                        if hasOptionalImportMessage {
                            try subBuilder.mergeFrom(other: optionalImportMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalImportMessage = subBuilder.buildPartial()

                    case 168:
                        let valueIntoptionalNestedEnum = try codedInputStream.readEnum()
                        if let enumsoptionalNestedEnum = ProtobufUnittest.TestAllTypesLite.NestedEnum(rawValue:valueIntoptionalNestedEnum){
                            optionalNestedEnum = enumsoptionalNestedEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 21, value:Int64(valueIntoptionalNestedEnum))
                        }

                    case 176:
                        let valueIntoptionalForeignEnum = try codedInputStream.readEnum()
                        if let enumsoptionalForeignEnum = ProtobufUnittest.ForeignEnumLite(rawValue:valueIntoptionalForeignEnum){
                            optionalForeignEnum = enumsoptionalForeignEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 22, value:Int64(valueIntoptionalForeignEnum))
                        }

                    case 184:
                        let valueIntoptionalImportEnum = try codedInputStream.readEnum()
                        if let enumsoptionalImportEnum = ProtobufUnittestImport.ImportEnumLite(rawValue:valueIntoptionalImportEnum){
                            optionalImportEnum = enumsoptionalImportEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 23, value:Int64(valueIntoptionalImportEnum))
                        }

                    case 194:
                        optionalStringPiece = try codedInputStream.readString()

                    case 202:
                        optionalCord = try codedInputStream.readString()

                    case 210:
                        let subBuilder:ProtobufUnittestImport.PublicImportMessageLite.Builder = ProtobufUnittestImport.PublicImportMessageLite.Builder()
                        if hasOptionalPublicImportMessage {
                            try subBuilder.mergeFrom(other: optionalPublicImportMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalPublicImportMessage = subBuilder.buildPartial()

                    case 218:
                        let subBuilder:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                        if hasOptionalLazyMessage {
                            try subBuilder.mergeFrom(other: optionalLazyMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalLazyMessage = subBuilder.buildPartial()

                    case 248:
                        repeatedInt32 += [try codedInputStream.readInt32()]

                    case 256:
                        repeatedInt64 += [try codedInputStream.readInt64()]

                    case 264:
                        repeatedUint32 += [try codedInputStream.readUInt32()]

                    case 272:
                        repeatedUint64 += [try codedInputStream.readUInt64()]

                    case 280:
                        repeatedSint32 += [try codedInputStream.readSInt32()]

                    case 288:
                        repeatedSint64 += [try codedInputStream.readSInt64()]

                    case 301:
                        repeatedFixed32 += [try codedInputStream.readFixed32()]

                    case 305:
                        repeatedFixed64 += [try codedInputStream.readFixed64()]

                    case 317:
                        repeatedSfixed32 += [try codedInputStream.readSFixed32()]

                    case 321:
                        repeatedSfixed64 += [try codedInputStream.readSFixed64()]

                    case 333:
                        repeatedFloat += [try codedInputStream.readFloat()]

                    case 337:
                        repeatedDouble += [try codedInputStream.readDouble()]

                    case 344:
                        repeatedBool += [try codedInputStream.readBool()]

                    case 354:
                        repeatedString += [try codedInputStream.readString()]

                    case 362:
                        repeatedBytes += [try codedInputStream.readData()]

                    case 371:
                        let subBuilder = ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder()
                        try codedInputStream.readGroup(fieldNumber:46, builder:subBuilder,extensionRegistry:extensionRegistry)
                        repeatedGroup.append(subBuilder.buildPartial())

                    case 386:
                        let subBuilder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                        try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                        repeatedNestedMessage.append(subBuilder.buildPartial())

                    case 394:
                        let subBuilder = ProtobufUnittest.ForeignMessageLite.Builder()
                        try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                        repeatedForeignMessage.append(subBuilder.buildPartial())

                    case 402:
                        let subBuilder = ProtobufUnittestImport.ImportMessageLite.Builder()
                        try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                        repeatedImportMessage.append(subBuilder.buildPartial())

                    case 408:
                        let valueIntrepeatedNestedEnum = try codedInputStream.readEnum()
                        if let enumsrepeatedNestedEnum = ProtobufUnittest.TestAllTypesLite.NestedEnum(rawValue:valueIntrepeatedNestedEnum) {
                            builderResult.repeatedNestedEnum.append(enumsrepeatedNestedEnum)
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 51, value:Int64(valueIntrepeatedNestedEnum))
                        }

                    case 416:
                        let valueIntrepeatedForeignEnum = try codedInputStream.readEnum()
                        if let enumsrepeatedForeignEnum = ProtobufUnittest.ForeignEnumLite(rawValue:valueIntrepeatedForeignEnum) {
                            builderResult.repeatedForeignEnum.append(enumsrepeatedForeignEnum)
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 52, value:Int64(valueIntrepeatedForeignEnum))
                        }

                    case 424:
                        let valueIntrepeatedImportEnum = try codedInputStream.readEnum()
                        if let enumsrepeatedImportEnum = ProtobufUnittestImport.ImportEnumLite(rawValue:valueIntrepeatedImportEnum) {
                            builderResult.repeatedImportEnum.append(enumsrepeatedImportEnum)
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 53, value:Int64(valueIntrepeatedImportEnum))
                        }

                    case 434:
                        repeatedStringPiece += [try codedInputStream.readString()]

                    case 442:
                        repeatedCord += [try codedInputStream.readString()]

                    case 458:
                        let subBuilder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                        try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                        repeatedLazyMessage.append(subBuilder.buildPartial())

                    case 488:
                        defaultInt32 = try codedInputStream.readInt32()

                    case 496:
                        defaultInt64 = try codedInputStream.readInt64()

                    case 504:
                        defaultUint32 = try codedInputStream.readUInt32()

                    case 512:
                        defaultUint64 = try codedInputStream.readUInt64()

                    case 520:
                        defaultSint32 = try codedInputStream.readSInt32()

                    case 528:
                        defaultSint64 = try codedInputStream.readSInt64()

                    case 541:
                        defaultFixed32 = try codedInputStream.readFixed32()

                    case 545:
                        defaultFixed64 = try codedInputStream.readFixed64()

                    case 557:
                        defaultSfixed32 = try codedInputStream.readSFixed32()

                    case 561:
                        defaultSfixed64 = try codedInputStream.readSFixed64()

                    case 573:
                        defaultFloat = try codedInputStream.readFloat()

                    case 577:
                        defaultDouble = try codedInputStream.readDouble()

                    case 584:
                        defaultBool = try codedInputStream.readBool()

                    case 594:
                        defaultString = try codedInputStream.readString()

                    case 602:
                        defaultBytes = try codedInputStream.readData()

                    case 648:
                        let valueIntdefaultNestedEnum = try codedInputStream.readEnum()
                        if let enumsdefaultNestedEnum = ProtobufUnittest.TestAllTypesLite.NestedEnum(rawValue:valueIntdefaultNestedEnum){
                            defaultNestedEnum = enumsdefaultNestedEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 81, value:Int64(valueIntdefaultNestedEnum))
                        }

                    case 656:
                        let valueIntdefaultForeignEnum = try codedInputStream.readEnum()
                        if let enumsdefaultForeignEnum = ProtobufUnittest.ForeignEnumLite(rawValue:valueIntdefaultForeignEnum){
                            defaultForeignEnum = enumsdefaultForeignEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 82, value:Int64(valueIntdefaultForeignEnum))
                        }

                    case 664:
                        let valueIntdefaultImportEnum = try codedInputStream.readEnum()
                        if let enumsdefaultImportEnum = ProtobufUnittestImport.ImportEnumLite(rawValue:valueIntdefaultImportEnum){
                            defaultImportEnum = enumsdefaultImportEnum
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 83, value:Int64(valueIntdefaultImportEnum))
                        }

                    case 674:
                        defaultStringPiece = try codedInputStream.readString()

                    case 682:
                        defaultCord = try codedInputStream.readString()

                    case 888:
                        oneofUint32 = try codedInputStream.readUInt32()

                    case 898:
                        let subBuilder:ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder = ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder()
                        if hasOneofNestedMessage {
                            try subBuilder.mergeFrom(other: oneofNestedMessage)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        oneofNestedMessage = subBuilder.buildPartial()

                    case 906:
                        oneofString = try codedInputStream.readString()

                    case 914:
                        oneofBytes = try codedInputStream.readData()

                    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.TestAllTypesLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                if let jsonValueOptionalInt32 = jsonMap["optionalInt32"] as? Int {
                    resultDecodedBuilder.optionalInt32 = Int32(jsonValueOptionalInt32)
                } else if let jsonValueOptionalInt32 = jsonMap["optionalInt32"] as? String {
                    resultDecodedBuilder.optionalInt32 = Int32(jsonValueOptionalInt32)!
                }
                if let jsonValueOptionalInt64 = jsonMap["optionalInt64"] as? String {
                    resultDecodedBuilder.optionalInt64 = Int64(jsonValueOptionalInt64)!
                } else if let jsonValueOptionalInt64 = jsonMap["optionalInt64"] as? Int {
                    resultDecodedBuilder.optionalInt64 = Int64(jsonValueOptionalInt64)
                }
                if let jsonValueOptionalUint32 = jsonMap["optionalUint32"] as? UInt {
                    resultDecodedBuilder.optionalUint32 = UInt32(jsonValueOptionalUint32)
                } else if let jsonValueOptionalUint32 = jsonMap["optionalUint32"] as? String {
                    resultDecodedBuilder.optionalUint32 = UInt32(jsonValueOptionalUint32)!
                }
                if let jsonValueOptionalUint64 = jsonMap["optionalUint64"] as? String {
                    resultDecodedBuilder.optionalUint64 = UInt64(jsonValueOptionalUint64)!
                } else if let jsonValueOptionalUint64 = jsonMap["optionalUint64"] as? UInt {
                    resultDecodedBuilder.optionalUint64 = UInt64(jsonValueOptionalUint64)
                }
                if let jsonValueOptionalSint32 = jsonMap["optionalSint32"] as? Int {
                    resultDecodedBuilder.optionalSint32 = Int32(jsonValueOptionalSint32)
                } else if let jsonValueOptionalSint32 = jsonMap["optionalSint32"] as? String {
                    resultDecodedBuilder.optionalSint32 = Int32(jsonValueOptionalSint32)!
                }
                if let jsonValueOptionalSint64 = jsonMap["optionalSint64"] as? String {
                    resultDecodedBuilder.optionalSint64 = Int64(jsonValueOptionalSint64)!
                } else if let jsonValueOptionalSint64 = jsonMap["optionalSint64"] as? Int {
                    resultDecodedBuilder.optionalSint64 = Int64(jsonValueOptionalSint64)
                }
                if let jsonValueOptionalFixed32 = jsonMap["optionalFixed32"] as? UInt {
                    resultDecodedBuilder.optionalFixed32 = UInt32(jsonValueOptionalFixed32)
                } else if let jsonValueOptionalFixed32 = jsonMap["optionalFixed32"] as? String {
                    resultDecodedBuilder.optionalFixed32 = UInt32(jsonValueOptionalFixed32)!
                }
                if let jsonValueOptionalFixed64 = jsonMap["optionalFixed64"] as? String {
                    resultDecodedBuilder.optionalFixed64 = UInt64(jsonValueOptionalFixed64)!
                } else if let jsonValueOptionalFixed64 = jsonMap["optionalFixed64"] as? UInt {
                    resultDecodedBuilder.optionalFixed64 = UInt64(jsonValueOptionalFixed64)
                }
                if let jsonValueOptionalSfixed32 = jsonMap["optionalSfixed32"] as? Int {
                    resultDecodedBuilder.optionalSfixed32 = Int32(jsonValueOptionalSfixed32)
                } else if let jsonValueOptionalSfixed32 = jsonMap["optionalSfixed32"] as? String {
                    resultDecodedBuilder.optionalSfixed32 = Int32(jsonValueOptionalSfixed32)!
                }
                if let jsonValueOptionalSfixed64 = jsonMap["optionalSfixed64"] as? String {
                    resultDecodedBuilder.optionalSfixed64 = Int64(jsonValueOptionalSfixed64)!
                } else if let jsonValueOptionalSfixed64 = jsonMap["optionalSfixed64"] as? Int {
                    resultDecodedBuilder.optionalSfixed64 = Int64(jsonValueOptionalSfixed64)
                }
                if let jsonValueOptionalFloat = jsonMap["optionalFloat"] as? Float {
                    resultDecodedBuilder.optionalFloat = Float(jsonValueOptionalFloat)
                } else if let jsonValueOptionalFloat = jsonMap["optionalFloat"] as? String {
                    resultDecodedBuilder.optionalFloat = Float(jsonValueOptionalFloat)!
                }
                if let jsonValueOptionalDouble = jsonMap["optionalDouble"] as? Double {
                    resultDecodedBuilder.optionalDouble = Double(jsonValueOptionalDouble)
                } else if let jsonValueOptionalDouble = jsonMap["optionalDouble"] as? String {
                    resultDecodedBuilder.optionalDouble = Double(jsonValueOptionalDouble)!
                }
                if let jsonValueOptionalBool = jsonMap["optionalBool"] as? Bool {
                    resultDecodedBuilder.optionalBool = jsonValueOptionalBool
                }
                if let jsonValueOptionalString = jsonMap["optionalString"] as? String {
                    resultDecodedBuilder.optionalString = jsonValueOptionalString
                }
                if let jsonValueOptionalBytes = jsonMap["optionalBytes"] as? String {
                    resultDecodedBuilder.optionalBytes = Data(base64Encoded:jsonValueOptionalBytes, options: Data.Base64DecodingOptions(rawValue:0))!
                }
                if let jsonValueOptionalGroup = jsonMap["optionalgroup"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalGroup = try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsonValueOptionalGroup).build()

                }
                if let jsonValueOptionalNestedMessage = jsonMap["optionalNestedMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalNestedMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:jsonValueOptionalNestedMessage).build()

                }
                if let jsonValueOptionalForeignMessage = jsonMap["optionalForeignMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalForeignMessage = try ProtobufUnittest.ForeignMessageLite.Builder.decodeToBuilder(jsonMap:jsonValueOptionalForeignMessage).build()

                }
                if let jsonValueOptionalImportMessage = jsonMap["optionalImportMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalImportMessage = try ProtobufUnittestImport.ImportMessageLite.Builder.decodeToBuilder(jsonMap:jsonValueOptionalImportMessage).build()

                }
                if let jsonValueOptionalNestedEnum = jsonMap["optionalNestedEnum"] as? String {
                    resultDecodedBuilder.optionalNestedEnum = try ProtobufUnittest.TestAllTypesLite.NestedEnum.fromString(jsonValueOptionalNestedEnum)
                }
                if let jsonValueOptionalForeignEnum = jsonMap["optionalForeignEnum"] as? String {
                    resultDecodedBuilder.optionalForeignEnum = try ProtobufUnittest.ForeignEnumLite.fromString(jsonValueOptionalForeignEnum)
                }
                if let jsonValueOptionalImportEnum = jsonMap["optionalImportEnum"] as? String {
                    resultDecodedBuilder.optionalImportEnum = try ProtobufUnittestImport.ImportEnumLite.fromString(jsonValueOptionalImportEnum)
                }
                if let jsonValueOptionalStringPiece = jsonMap["optionalStringPiece"] as? String {
                    resultDecodedBuilder.optionalStringPiece = jsonValueOptionalStringPiece
                }
                if let jsonValueOptionalCord = jsonMap["optionalCord"] as? String {
                    resultDecodedBuilder.optionalCord = jsonValueOptionalCord
                }
                if let jsonValueOptionalPublicImportMessage = jsonMap["optionalPublicImportMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalPublicImportMessage = try ProtobufUnittestImport.PublicImportMessageLite.Builder.decodeToBuilder(jsonMap:jsonValueOptionalPublicImportMessage).build()

                }
                if let jsonValueOptionalLazyMessage = jsonMap["optionalLazyMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalLazyMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:jsonValueOptionalLazyMessage).build()

                }
                if let jsonValueRepeatedInt32 = jsonMap["repeatedInt32"] as? Array<Int> {
                    var jsonArrayRepeatedInt32:Array<Int32> = []
                    for oneValueRepeatedInt32 in jsonValueRepeatedInt32 {
                        jsonArrayRepeatedInt32.append(Int32(oneValueRepeatedInt32))
                    }
                    resultDecodedBuilder.repeatedInt32 = jsonArrayRepeatedInt32
                }
                if let jsonValueRepeatedInt64 = jsonMap["repeatedInt64"] as? Array<String> {
                    var jsonArrayRepeatedInt64:Array<Int64> = []
                    for oneValueRepeatedInt64 in jsonValueRepeatedInt64 {
                        jsonArrayRepeatedInt64.append(Int64(oneValueRepeatedInt64)!)
                    }
                    resultDecodedBuilder.repeatedInt64 = jsonArrayRepeatedInt64
                }
                if let jsonValueRepeatedUint32 = jsonMap["repeatedUint32"] as? Array<UInt> {
                    var jsonArrayRepeatedUint32:Array<UInt32> = []
                    for oneValueRepeatedUint32 in jsonValueRepeatedUint32 {
                        jsonArrayRepeatedUint32.append(UInt32(oneValueRepeatedUint32))
                    }
                    resultDecodedBuilder.repeatedUint32 = jsonArrayRepeatedUint32
                }
                if let jsonValueRepeatedUint64 = jsonMap["repeatedUint64"] as? Array<String> {
                    var jsonArrayRepeatedUint64:Array<UInt64> = []
                    for oneValueRepeatedUint64 in jsonValueRepeatedUint64 {
                        jsonArrayRepeatedUint64.append(UInt64(oneValueRepeatedUint64)!)
                    }
                    resultDecodedBuilder.repeatedUint64 = jsonArrayRepeatedUint64
                }
                if let jsonValueRepeatedSint32 = jsonMap["repeatedSint32"] as? Array<Int> {
                    var jsonArrayRepeatedSint32:Array<Int32> = []
                    for oneValueRepeatedSint32 in jsonValueRepeatedSint32 {
                        jsonArrayRepeatedSint32.append(Int32(oneValueRepeatedSint32))
                    }
                    resultDecodedBuilder.repeatedSint32 = jsonArrayRepeatedSint32
                }
                if let jsonValueRepeatedSint64 = jsonMap["repeatedSint64"] as? Array<String> {
                    var jsonArrayRepeatedSint64:Array<Int64> = []
                    for oneValueRepeatedSint64 in jsonValueRepeatedSint64 {
                        jsonArrayRepeatedSint64.append(Int64(oneValueRepeatedSint64)!)
                    }
                    resultDecodedBuilder.repeatedSint64 = jsonArrayRepeatedSint64
                }
                if let jsonValueRepeatedFixed32 = jsonMap["repeatedFixed32"] as? Array<UInt> {
                    var jsonArrayRepeatedFixed32:Array<UInt32> = []
                    for oneValueRepeatedFixed32 in jsonValueRepeatedFixed32 {
                        jsonArrayRepeatedFixed32.append(UInt32(oneValueRepeatedFixed32))
                    }
                    resultDecodedBuilder.repeatedFixed32 = jsonArrayRepeatedFixed32
                }
                if let jsonValueRepeatedFixed64 = jsonMap["repeatedFixed64"] as? Array<String> {
                    var jsonArrayRepeatedFixed64:Array<UInt64> = []
                    for oneValueRepeatedFixed64 in jsonValueRepeatedFixed64 {
                        jsonArrayRepeatedFixed64.append(UInt64(oneValueRepeatedFixed64)!)
                    }
                    resultDecodedBuilder.repeatedFixed64 = jsonArrayRepeatedFixed64
                }
                if let jsonValueRepeatedSfixed32 = jsonMap["repeatedSfixed32"] as? Array<Int> {
                    var jsonArrayRepeatedSfixed32:Array<Int32> = []
                    for oneValueRepeatedSfixed32 in jsonValueRepeatedSfixed32 {
                        jsonArrayRepeatedSfixed32.append(Int32(oneValueRepeatedSfixed32))
                    }
                    resultDecodedBuilder.repeatedSfixed32 = jsonArrayRepeatedSfixed32
                }
                if let jsonValueRepeatedSfixed64 = jsonMap["repeatedSfixed64"] as? Array<String> {
                    var jsonArrayRepeatedSfixed64:Array<Int64> = []
                    for oneValueRepeatedSfixed64 in jsonValueRepeatedSfixed64 {
                        jsonArrayRepeatedSfixed64.append(Int64(oneValueRepeatedSfixed64)!)
                    }
                    resultDecodedBuilder.repeatedSfixed64 = jsonArrayRepeatedSfixed64
                }
                if let jsonValueRepeatedFloat = jsonMap["repeatedFloat"] as? Array<Float> {
                    var jsonArrayRepeatedFloat:Array<Float> = []
                    for oneValueRepeatedFloat in jsonValueRepeatedFloat {
                        jsonArrayRepeatedFloat.append(Float(oneValueRepeatedFloat))
                    }
                    resultDecodedBuilder.repeatedFloat = jsonArrayRepeatedFloat
                }
                if let jsonValueRepeatedDouble = jsonMap["repeatedDouble"] as? Array<Double> {
                    var jsonArrayRepeatedDouble:Array<Double> = []
                    for oneValueRepeatedDouble in jsonValueRepeatedDouble {
                        jsonArrayRepeatedDouble.append(Double(oneValueRepeatedDouble))
                    }
                    resultDecodedBuilder.repeatedDouble = jsonArrayRepeatedDouble
                }
                if let jsonValueRepeatedBool = jsonMap["repeatedBool"] as? Array<Bool> {
                    var jsonArrayRepeatedBool:Array<Bool> = []
                    for oneValueRepeatedBool in jsonValueRepeatedBool {
                        jsonArrayRepeatedBool.append(oneValueRepeatedBool)
                    }
                    resultDecodedBuilder.repeatedBool = jsonArrayRepeatedBool
                }
                if let jsonValueRepeatedString = jsonMap["repeatedString"] as? Array<String> {
                    var jsonArrayRepeatedString:Array<String> = []
                    for oneValueRepeatedString in jsonValueRepeatedString {
                        jsonArrayRepeatedString.append(oneValueRepeatedString)
                    }
                    resultDecodedBuilder.repeatedString = jsonArrayRepeatedString
                }
                if let jsonValueRepeatedBytes = jsonMap["repeatedBytes"] as? Array<String> {
                    var jsonArrayRepeatedBytes:Array<Data> = []
                    for oneValueRepeatedBytes in jsonValueRepeatedBytes {
                        jsonArrayRepeatedBytes.append(Data(base64Encoded:oneValueRepeatedBytes, options: Data.Base64DecodingOptions(rawValue:0))!)
                    }
                    resultDecodedBuilder.repeatedBytes = jsonArrayRepeatedBytes
                }
                if let jsonValueRepeatedGroup = jsonMap["repeatedgroup"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedGroup:Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup> = []
                    for oneValueRepeatedGroup in jsonValueRepeatedGroup {
                        let messageFromStringRepeatedGroup = try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:oneValueRepeatedGroup).build()

                        jsonArrayRepeatedGroup.append(messageFromStringRepeatedGroup)
                    }
                    resultDecodedBuilder.repeatedGroup = jsonArrayRepeatedGroup
                }
                if let jsonValueRepeatedNestedMessage = jsonMap["repeatedNestedMessage"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedNestedMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> = []
                    for oneValueRepeatedNestedMessage in jsonValueRepeatedNestedMessage {
                        let messageFromStringRepeatedNestedMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:oneValueRepeatedNestedMessage).build()

                        jsonArrayRepeatedNestedMessage.append(messageFromStringRepeatedNestedMessage)
                    }
                    resultDecodedBuilder.repeatedNestedMessage = jsonArrayRepeatedNestedMessage
                }
                if let jsonValueRepeatedForeignMessage = jsonMap["repeatedForeignMessage"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedForeignMessage:Array<ProtobufUnittest.ForeignMessageLite> = []
                    for oneValueRepeatedForeignMessage in jsonValueRepeatedForeignMessage {
                        let messageFromStringRepeatedForeignMessage = try ProtobufUnittest.ForeignMessageLite.Builder.decodeToBuilder(jsonMap:oneValueRepeatedForeignMessage).build()

                        jsonArrayRepeatedForeignMessage.append(messageFromStringRepeatedForeignMessage)
                    }
                    resultDecodedBuilder.repeatedForeignMessage = jsonArrayRepeatedForeignMessage
                }
                if let jsonValueRepeatedImportMessage = jsonMap["repeatedImportMessage"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedImportMessage:Array<ProtobufUnittestImport.ImportMessageLite> = []
                    for oneValueRepeatedImportMessage in jsonValueRepeatedImportMessage {
                        let messageFromStringRepeatedImportMessage = try ProtobufUnittestImport.ImportMessageLite.Builder.decodeToBuilder(jsonMap:oneValueRepeatedImportMessage).build()

                        jsonArrayRepeatedImportMessage.append(messageFromStringRepeatedImportMessage)
                    }
                    resultDecodedBuilder.repeatedImportMessage = jsonArrayRepeatedImportMessage
                }
                if let jsonValueRepeatedNestedEnum = jsonMap["repeatedNestedEnum"] as? Array<String> {
                    var jsonArrayRepeatedNestedEnum:Array<ProtobufUnittest.TestAllTypesLite.NestedEnum> = []
                    for oneValueRepeatedNestedEnum in jsonValueRepeatedNestedEnum {
                        let enumFromStringRepeatedNestedEnum = try ProtobufUnittest.TestAllTypesLite.NestedEnum.fromString(oneValueRepeatedNestedEnum)
                        jsonArrayRepeatedNestedEnum.append(enumFromStringRepeatedNestedEnum)
                    }
                    resultDecodedBuilder.repeatedNestedEnum = jsonArrayRepeatedNestedEnum
                }
                if let jsonValueRepeatedForeignEnum = jsonMap["repeatedForeignEnum"] as? Array<String> {
                    var jsonArrayRepeatedForeignEnum:Array<ProtobufUnittest.ForeignEnumLite> = []
                    for oneValueRepeatedForeignEnum in jsonValueRepeatedForeignEnum {
                        let enumFromStringRepeatedForeignEnum = try ProtobufUnittest.ForeignEnumLite.fromString(oneValueRepeatedForeignEnum)
                        jsonArrayRepeatedForeignEnum.append(enumFromStringRepeatedForeignEnum)
                    }
                    resultDecodedBuilder.repeatedForeignEnum = jsonArrayRepeatedForeignEnum
                }
                if let jsonValueRepeatedImportEnum = jsonMap["repeatedImportEnum"] as? Array<String> {
                    var jsonArrayRepeatedImportEnum:Array<ProtobufUnittestImport.ImportEnumLite> = []
                    for oneValueRepeatedImportEnum in jsonValueRepeatedImportEnum {
                        let enumFromStringRepeatedImportEnum = try ProtobufUnittestImport.ImportEnumLite.fromString(oneValueRepeatedImportEnum)
                        jsonArrayRepeatedImportEnum.append(enumFromStringRepeatedImportEnum)
                    }
                    resultDecodedBuilder.repeatedImportEnum = jsonArrayRepeatedImportEnum
                }
                if let jsonValueRepeatedStringPiece = jsonMap["repeatedStringPiece"] as? Array<String> {
                    var jsonArrayRepeatedStringPiece:Array<String> = []
                    for oneValueRepeatedStringPiece in jsonValueRepeatedStringPiece {
                        jsonArrayRepeatedStringPiece.append(oneValueRepeatedStringPiece)
                    }
                    resultDecodedBuilder.repeatedStringPiece = jsonArrayRepeatedStringPiece
                }
                if let jsonValueRepeatedCord = jsonMap["repeatedCord"] as? Array<String> {
                    var jsonArrayRepeatedCord:Array<String> = []
                    for oneValueRepeatedCord in jsonValueRepeatedCord {
                        jsonArrayRepeatedCord.append(oneValueRepeatedCord)
                    }
                    resultDecodedBuilder.repeatedCord = jsonArrayRepeatedCord
                }
                if let jsonValueRepeatedLazyMessage = jsonMap["repeatedLazyMessage"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedLazyMessage:Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> = []
                    for oneValueRepeatedLazyMessage in jsonValueRepeatedLazyMessage {
                        let messageFromStringRepeatedLazyMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:oneValueRepeatedLazyMessage).build()

                        jsonArrayRepeatedLazyMessage.append(messageFromStringRepeatedLazyMessage)
                    }
                    resultDecodedBuilder.repeatedLazyMessage = jsonArrayRepeatedLazyMessage
                }
                if let jsonValueDefaultInt32 = jsonMap["defaultInt32"] as? Int {
                    resultDecodedBuilder.defaultInt32 = Int32(jsonValueDefaultInt32)
                } else if let jsonValueDefaultInt32 = jsonMap["defaultInt32"] as? String {
                    resultDecodedBuilder.defaultInt32 = Int32(jsonValueDefaultInt32)!
                }
                if let jsonValueDefaultInt64 = jsonMap["defaultInt64"] as? String {
                    resultDecodedBuilder.defaultInt64 = Int64(jsonValueDefaultInt64)!
                } else if let jsonValueDefaultInt64 = jsonMap["defaultInt64"] as? Int {
                    resultDecodedBuilder.defaultInt64 = Int64(jsonValueDefaultInt64)
                }
                if let jsonValueDefaultUint32 = jsonMap["defaultUint32"] as? UInt {
                    resultDecodedBuilder.defaultUint32 = UInt32(jsonValueDefaultUint32)
                } else if let jsonValueDefaultUint32 = jsonMap["defaultUint32"] as? String {
                    resultDecodedBuilder.defaultUint32 = UInt32(jsonValueDefaultUint32)!
                }
                if let jsonValueDefaultUint64 = jsonMap["defaultUint64"] as? String {
                    resultDecodedBuilder.defaultUint64 = UInt64(jsonValueDefaultUint64)!
                } else if let jsonValueDefaultUint64 = jsonMap["defaultUint64"] as? UInt {
                    resultDecodedBuilder.defaultUint64 = UInt64(jsonValueDefaultUint64)
                }
                if let jsonValueDefaultSint32 = jsonMap["defaultSint32"] as? Int {
                    resultDecodedBuilder.defaultSint32 = Int32(jsonValueDefaultSint32)
                } else if let jsonValueDefaultSint32 = jsonMap["defaultSint32"] as? String {
                    resultDecodedBuilder.defaultSint32 = Int32(jsonValueDefaultSint32)!
                }
                if let jsonValueDefaultSint64 = jsonMap["defaultSint64"] as? String {
                    resultDecodedBuilder.defaultSint64 = Int64(jsonValueDefaultSint64)!
                } else if let jsonValueDefaultSint64 = jsonMap["defaultSint64"] as? Int {
                    resultDecodedBuilder.defaultSint64 = Int64(jsonValueDefaultSint64)
                }
                if let jsonValueDefaultFixed32 = jsonMap["defaultFixed32"] as? UInt {
                    resultDecodedBuilder.defaultFixed32 = UInt32(jsonValueDefaultFixed32)
                } else if let jsonValueDefaultFixed32 = jsonMap["defaultFixed32"] as? String {
                    resultDecodedBuilder.defaultFixed32 = UInt32(jsonValueDefaultFixed32)!
                }
                if let jsonValueDefaultFixed64 = jsonMap["defaultFixed64"] as? String {
                    resultDecodedBuilder.defaultFixed64 = UInt64(jsonValueDefaultFixed64)!
                } else if let jsonValueDefaultFixed64 = jsonMap["defaultFixed64"] as? UInt {
                    resultDecodedBuilder.defaultFixed64 = UInt64(jsonValueDefaultFixed64)
                }
                if let jsonValueDefaultSfixed32 = jsonMap["defaultSfixed32"] as? Int {
                    resultDecodedBuilder.defaultSfixed32 = Int32(jsonValueDefaultSfixed32)
                } else if let jsonValueDefaultSfixed32 = jsonMap["defaultSfixed32"] as? String {
                    resultDecodedBuilder.defaultSfixed32 = Int32(jsonValueDefaultSfixed32)!
                }
                if let jsonValueDefaultSfixed64 = jsonMap["defaultSfixed64"] as? String {
                    resultDecodedBuilder.defaultSfixed64 = Int64(jsonValueDefaultSfixed64)!
                } else if let jsonValueDefaultSfixed64 = jsonMap["defaultSfixed64"] as? Int {
                    resultDecodedBuilder.defaultSfixed64 = Int64(jsonValueDefaultSfixed64)
                }
                if let jsonValueDefaultFloat = jsonMap["defaultFloat"] as? Float {
                    resultDecodedBuilder.defaultFloat = Float(jsonValueDefaultFloat)
                } else if let jsonValueDefaultFloat = jsonMap["defaultFloat"] as? String {
                    resultDecodedBuilder.defaultFloat = Float(jsonValueDefaultFloat)!
                }
                if let jsonValueDefaultDouble = jsonMap["defaultDouble"] as? Double {
                    resultDecodedBuilder.defaultDouble = Double(jsonValueDefaultDouble)
                } else if let jsonValueDefaultDouble = jsonMap["defaultDouble"] as? String {
                    resultDecodedBuilder.defaultDouble = Double(jsonValueDefaultDouble)!
                }
                if let jsonValueDefaultBool = jsonMap["defaultBool"] as? Bool {
                    resultDecodedBuilder.defaultBool = jsonValueDefaultBool
                }
                if let jsonValueDefaultString = jsonMap["defaultString"] as? String {
                    resultDecodedBuilder.defaultString = jsonValueDefaultString
                }
                if let jsonValueDefaultBytes = jsonMap["defaultBytes"] as? String {
                    resultDecodedBuilder.defaultBytes = Data(base64Encoded:jsonValueDefaultBytes, options: Data.Base64DecodingOptions(rawValue:0))!
                }
                if let jsonValueDefaultNestedEnum = jsonMap["defaultNestedEnum"] as? String {
                    resultDecodedBuilder.defaultNestedEnum = try ProtobufUnittest.TestAllTypesLite.NestedEnum.fromString(jsonValueDefaultNestedEnum)
                }
                if let jsonValueDefaultForeignEnum = jsonMap["defaultForeignEnum"] as? String {
                    resultDecodedBuilder.defaultForeignEnum = try ProtobufUnittest.ForeignEnumLite.fromString(jsonValueDefaultForeignEnum)
                }
                if let jsonValueDefaultImportEnum = jsonMap["defaultImportEnum"] as? String {
                    resultDecodedBuilder.defaultImportEnum = try ProtobufUnittestImport.ImportEnumLite.fromString(jsonValueDefaultImportEnum)
                }
                if let jsonValueDefaultStringPiece = jsonMap["defaultStringPiece"] as? String {
                    resultDecodedBuilder.defaultStringPiece = jsonValueDefaultStringPiece
                }
                if let jsonValueDefaultCord = jsonMap["defaultCord"] as? String {
                    resultDecodedBuilder.defaultCord = jsonValueDefaultCord
                }
                if let jsonValueOneofUint32 = jsonMap["oneofUint32"] as? UInt {
                    resultDecodedBuilder.oneofUint32 = UInt32(jsonValueOneofUint32)
                } else if let jsonValueOneofUint32 = jsonMap["oneofUint32"] as? String {
                    resultDecodedBuilder.oneofUint32 = UInt32(jsonValueOneofUint32)!
                }
                if let jsonValueOneofNestedMessage = jsonMap["oneofNestedMessage"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.oneofNestedMessage = try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder.decodeToBuilder(jsonMap:jsonValueOneofNestedMessage).build()

                }
                if let jsonValueOneofString = jsonMap["oneofString"] as? String {
                    resultDecodedBuilder.oneofString = jsonValueOneofString
                }
                if let jsonValueOneofBytes = jsonMap["oneofBytes"] as? String {
                    resultDecodedBuilder.oneofBytes = Data(base64Encoded:jsonValueOneofBytes, options: Data.Base64DecodingOptions(rawValue:0))!
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllTypesLite.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.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class ForeignMessageLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.ForeignMessageLite.Builder

        public static func == (lhs: ProtobufUnittest.ForeignMessageLite, rhs: ProtobufUnittest.ForeignMessageLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasC == rhs.hasC) && (!lhs.hasC || lhs.c == rhs.c)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public fileprivate(set) var c:Int32! = nil
        public fileprivate(set) var hasC:Bool = false

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasC {
                try codedOutputStream.writeInt32(fieldNumber: 1, value:c)
            }
            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 hasC {
                serialize_size += c.computeInt32Size(fieldNumber: 1)
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.ForeignMessageLite.Builder {
            return ProtobufUnittest.ForeignMessageLite.classBuilder() as! ProtobufUnittest.ForeignMessageLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.ForeignMessageLite.Builder {
            return classBuilder() as! ProtobufUnittest.ForeignMessageLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.ForeignMessageLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.ForeignMessageLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.ForeignMessageLite.Builder {
            return try ProtobufUnittest.ForeignMessageLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.ForeignMessageLite) throws -> ProtobufUnittest.ForeignMessageLite.Builder {
            return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasC {
                jsonMap["c"] = Int(c)
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.ForeignMessageLite {
            return try ProtobufUnittest.ForeignMessageLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.ForeignMessageLite {
            return try ProtobufUnittest.ForeignMessageLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasC {
                output += "\(indent) c: \(String(describing: c)) \n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasC {
                    hashCode = (hashCode &* 31) &+ c.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var c:Int32 {
                get {
                    return builderResult.c
                }
                set (value) {
                    builderResult.hasC = true
                    builderResult.c = value
                }
            }
            public var hasC:Bool {
                get {
                    return builderResult.hasC
                }
            }
            @discardableResult
            public func setC(_ value:Int32) -> ProtobufUnittest.ForeignMessageLite.Builder {
                self.c = value
                return self
            }
            @discardableResult
            public func clearC() -> ProtobufUnittest.ForeignMessageLite.Builder{
                builderResult.hasC = false
                builderResult.c = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.ForeignMessageLite.Builder {
                builderResult = ProtobufUnittest.ForeignMessageLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.ForeignMessageLite.Builder {
                return try ProtobufUnittest.ForeignMessageLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.ForeignMessageLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.ForeignMessageLite {
                let returnMe:ProtobufUnittest.ForeignMessageLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.ForeignMessageLite) throws -> ProtobufUnittest.ForeignMessageLite.Builder {
                if other == ProtobufUnittest.ForeignMessageLite() {
                    return self
                }
                if other.hasC {
                    c = other.c
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.ForeignMessageLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.ForeignMessageLite.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 8:
                        c = try codedInputStream.readInt32()

                    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.ForeignMessageLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.ForeignMessageLite.Builder()
                if let jsonValueC = jsonMap["c"] as? Int {
                    resultDecodedBuilder.c = Int32(jsonValueC)
                } else if let jsonValueC = jsonMap["c"] as? String {
                    resultDecodedBuilder.c = Int32(jsonValueC)!
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.ForeignMessageLite.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.ForeignMessageLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class TestPackedTypesLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestPackedTypesLite.Builder

        public static func == (lhs: ProtobufUnittest.TestPackedTypesLite, rhs: ProtobufUnittest.TestPackedTypesLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.packedInt32 == rhs.packedInt32)
            fieldCheck = fieldCheck && (lhs.packedInt64 == rhs.packedInt64)
            fieldCheck = fieldCheck && (lhs.packedUint32 == rhs.packedUint32)
            fieldCheck = fieldCheck && (lhs.packedUint64 == rhs.packedUint64)
            fieldCheck = fieldCheck && (lhs.packedSint32 == rhs.packedSint32)
            fieldCheck = fieldCheck && (lhs.packedSint64 == rhs.packedSint64)
            fieldCheck = fieldCheck && (lhs.packedFixed32 == rhs.packedFixed32)
            fieldCheck = fieldCheck && (lhs.packedFixed64 == rhs.packedFixed64)
            fieldCheck = fieldCheck && (lhs.packedSfixed32 == rhs.packedSfixed32)
            fieldCheck = fieldCheck && (lhs.packedSfixed64 == rhs.packedSfixed64)
            fieldCheck = fieldCheck && (lhs.packedFloat == rhs.packedFloat)
            fieldCheck = fieldCheck && (lhs.packedDouble == rhs.packedDouble)
            fieldCheck = fieldCheck && (lhs.packedBool == rhs.packedBool)
            fieldCheck = fieldCheck && (lhs.packedEnum == rhs.packedEnum)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public fileprivate(set) var packedInt32:Array<Int32> = Array<Int32>()
        private var packedInt32MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedInt64:Array<Int64> = Array<Int64>()
        private var packedInt64MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedUint32:Array<UInt32> = Array<UInt32>()
        private var packedUint32MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedUint64:Array<UInt64> = Array<UInt64>()
        private var packedUint64MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedSint32:Array<Int32> = Array<Int32>()
        private var packedSint32MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedSint64:Array<Int64> = Array<Int64>()
        private var packedSint64MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedFixed32:Array<UInt32> = Array<UInt32>()
        private var packedFixed32MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedFixed64:Array<UInt64> = Array<UInt64>()
        private var packedFixed64MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedSfixed32:Array<Int32> = Array<Int32>()
        private var packedSfixed32MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedSfixed64:Array<Int64> = Array<Int64>()
        private var packedSfixed64MemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedFloat:Array<Float> = Array<Float>()
        private var packedFloatMemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedDouble:Array<Double> = Array<Double>()
        private var packedDoubleMemoizedSerializedSize:Int32 = -1
        public fileprivate(set) var packedBool:Array<Bool> = Array<Bool>()
        private var packedBoolMemoizedSerializedSize:Int32 = -1
        private var packedEnumMemoizedSerializedSize:Int32 = 0
        public fileprivate(set) var packedEnum:Array<ProtobufUnittest.ForeignEnumLite> = Array<ProtobufUnittest.ForeignEnumLite>()
        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if !packedInt32.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 722)
                try codedOutputStream.writeRawVarint32(value: packedInt32MemoizedSerializedSize)
                for oneValuepackedInt32 in packedInt32 {
                    try codedOutputStream.writeInt32NoTag(value: oneValuepackedInt32)
                }
            }
            if !packedInt64.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 730)
                try codedOutputStream.writeRawVarint32(value: packedInt64MemoizedSerializedSize)
                for oneValuepackedInt64 in packedInt64 {
                    try codedOutputStream.writeInt64NoTag(value: oneValuepackedInt64)
                }
            }
            if !packedUint32.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 738)
                try codedOutputStream.writeRawVarint32(value: packedUint32MemoizedSerializedSize)
                for oneValuepackedUint32 in packedUint32 {
                    try codedOutputStream.writeUInt32NoTag(value: oneValuepackedUint32)
                }
            }
            if !packedUint64.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 746)
                try codedOutputStream.writeRawVarint32(value: packedUint64MemoizedSerializedSize)
                for oneValuepackedUint64 in packedUint64 {
                    try codedOutputStream.writeUInt64NoTag(value: oneValuepackedUint64)
                }
            }
            if !packedSint32.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 754)
                try codedOutputStream.writeRawVarint32(value: packedSint32MemoizedSerializedSize)
                for oneValuepackedSint32 in packedSint32 {
                    try codedOutputStream.writeSInt32NoTag(value: oneValuepackedSint32)
                }
            }
            if !packedSint64.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 762)
                try codedOutputStream.writeRawVarint32(value: packedSint64MemoizedSerializedSize)
                for oneValuepackedSint64 in packedSint64 {
                    try codedOutputStream.writeSInt64NoTag(value: oneValuepackedSint64)
                }
            }
            if !packedFixed32.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 770)
                try codedOutputStream.writeRawVarint32(value: packedFixed32MemoizedSerializedSize)
                for oneValuepackedFixed32 in packedFixed32 {
                    try codedOutputStream.writeFixed32NoTag(value: oneValuepackedFixed32)
                }
            }
            if !packedFixed64.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 778)
                try codedOutputStream.writeRawVarint32(value: packedFixed64MemoizedSerializedSize)
                for oneValuepackedFixed64 in packedFixed64 {
                    try codedOutputStream.writeFixed64NoTag(value: oneValuepackedFixed64)
                }
            }
            if !packedSfixed32.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 786)
                try codedOutputStream.writeRawVarint32(value: packedSfixed32MemoizedSerializedSize)
                for oneValuepackedSfixed32 in packedSfixed32 {
                    try codedOutputStream.writeSFixed32NoTag(value: oneValuepackedSfixed32)
                }
            }
            if !packedSfixed64.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 794)
                try codedOutputStream.writeRawVarint32(value: packedSfixed64MemoizedSerializedSize)
                for oneValuepackedSfixed64 in packedSfixed64 {
                    try codedOutputStream.writeSFixed64NoTag(value: oneValuepackedSfixed64)
                }
            }
            if !packedFloat.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 802)
                try codedOutputStream.writeRawVarint32(value: packedFloatMemoizedSerializedSize)
                for oneValuepackedFloat in packedFloat {
                    try codedOutputStream.writeFloatNoTag(value: oneValuepackedFloat)
                }
            }
            if !packedDouble.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 810)
                try codedOutputStream.writeRawVarint32(value: packedDoubleMemoizedSerializedSize)
                for oneValuepackedDouble in packedDouble {
                    try codedOutputStream.writeDoubleNoTag(value: oneValuepackedDouble)
                }
            }
            if !packedBool.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 818)
                try codedOutputStream.writeRawVarint32(value: packedBoolMemoizedSerializedSize)
                for oneValuepackedBool in packedBool {
                    try codedOutputStream.writeBoolNoTag(value: oneValuepackedBool)
                }
            }
            if !packedEnum.isEmpty {
                try codedOutputStream.writeRawVarint32(value: 826)
                try codedOutputStream.writeRawVarint32(value: packedEnumMemoizedSerializedSize)
            }
            for oneValueOfpackedEnum in packedEnum {
                  try codedOutputStream.writeEnumNoTag(value: oneValueOfpackedEnum.rawValue)
            }
            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
            var dataSizePackedInt32:Int32 = 0
            for oneValuepackedInt32 in packedInt32 {
                dataSizePackedInt32 += oneValuepackedInt32.computeInt32SizeNoTag()
            }
            serialize_size += dataSizePackedInt32
            if !packedInt32.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedInt32.computeInt32SizeNoTag()
            }
            packedInt32MemoizedSerializedSize = dataSizePackedInt32
            var dataSizePackedInt64:Int32 = 0
            for oneValuepackedInt64 in packedInt64 {
                dataSizePackedInt64 += oneValuepackedInt64.computeInt64SizeNoTag()
            }
            serialize_size += dataSizePackedInt64
            if !packedInt64.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedInt64.computeInt32SizeNoTag()
            }
            packedInt64MemoizedSerializedSize = dataSizePackedInt64
            var dataSizePackedUint32:Int32 = 0
            for oneValuepackedUint32 in packedUint32 {
                dataSizePackedUint32 += oneValuepackedUint32.computeUInt32SizeNoTag()
            }
            serialize_size += dataSizePackedUint32
            if !packedUint32.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedUint32.computeInt32SizeNoTag()
            }
            packedUint32MemoizedSerializedSize = dataSizePackedUint32
            var dataSizePackedUint64:Int32 = 0
            for oneValuepackedUint64 in packedUint64 {
                dataSizePackedUint64 += oneValuepackedUint64.computeUInt64SizeNoTag()
            }
            serialize_size += dataSizePackedUint64
            if !packedUint64.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedUint64.computeInt32SizeNoTag()
            }
            packedUint64MemoizedSerializedSize = dataSizePackedUint64
            var dataSizePackedSint32:Int32 = 0
            for oneValuepackedSint32 in packedSint32 {
                dataSizePackedSint32 += oneValuepackedSint32.computeSInt32SizeNoTag()
            }
            serialize_size += dataSizePackedSint32
            if !packedSint32.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedSint32.computeInt32SizeNoTag()
            }
            packedSint32MemoizedSerializedSize = dataSizePackedSint32
            var dataSizePackedSint64:Int32 = 0
            for oneValuepackedSint64 in packedSint64 {
                dataSizePackedSint64 += oneValuepackedSint64.computeSInt64SizeNoTag()
            }
            serialize_size += dataSizePackedSint64
            if !packedSint64.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedSint64.computeInt32SizeNoTag()
            }
            packedSint64MemoizedSerializedSize = dataSizePackedSint64
            var dataSizePackedFixed32:Int32 = 0
            dataSizePackedFixed32 = 4 * Int32(packedFixed32.count)
            serialize_size += dataSizePackedFixed32
            if !packedFixed32.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedFixed32.computeInt32SizeNoTag()
            }
            packedFixed32MemoizedSerializedSize = dataSizePackedFixed32
            var dataSizePackedFixed64:Int32 = 0
            dataSizePackedFixed64 = 8 * Int32(packedFixed64.count)
            serialize_size += dataSizePackedFixed64
            if !packedFixed64.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedFixed64.computeInt32SizeNoTag()
            }
            packedFixed64MemoizedSerializedSize = dataSizePackedFixed64
            var dataSizePackedSfixed32:Int32 = 0
            dataSizePackedSfixed32 = 4 * Int32(packedSfixed32.count)
            serialize_size += dataSizePackedSfixed32
            if !packedSfixed32.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedSfixed32.computeInt32SizeNoTag()
            }
            packedSfixed32MemoizedSerializedSize = dataSizePackedSfixed32
            var dataSizePackedSfixed64:Int32 = 0
            dataSizePackedSfixed64 = 8 * Int32(packedSfixed64.count)
            serialize_size += dataSizePackedSfixed64
            if !packedSfixed64.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedSfixed64.computeInt32SizeNoTag()
            }
            packedSfixed64MemoizedSerializedSize = dataSizePackedSfixed64
            var dataSizePackedFloat:Int32 = 0
            dataSizePackedFloat = 4 * Int32(packedFloat.count)
            serialize_size += dataSizePackedFloat
            if !packedFloat.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedFloat.computeInt32SizeNoTag()
            }
            packedFloatMemoizedSerializedSize = dataSizePackedFloat
            var dataSizePackedDouble:Int32 = 0
            dataSizePackedDouble = 8 * Int32(packedDouble.count)
            serialize_size += dataSizePackedDouble
            if !packedDouble.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedDouble.computeInt32SizeNoTag()
            }
            packedDoubleMemoizedSerializedSize = dataSizePackedDouble
            var dataSizePackedBool:Int32 = 0
            dataSizePackedBool = 1 * Int32(packedBool.count)
            serialize_size += dataSizePackedBool
            if !packedBool.isEmpty {
                serialize_size += 2
                serialize_size += dataSizePackedBool.computeInt32SizeNoTag()
            }
            packedBoolMemoizedSerializedSize = dataSizePackedBool
            var dataSizepackedEnum:Int32 = 0
            for oneValueOfpackedEnum in packedEnum {
                dataSizepackedEnum += oneValueOfpackedEnum.rawValue.computeEnumSizeNoTag()
            }
            serialize_size += dataSizepackedEnum
            if !packedEnum.isEmpty {
                serialize_size += 2
                serialize_size += dataSizepackedEnum.computeRawVarint32Size()
            }
            packedEnumMemoizedSerializedSize = dataSizepackedEnum
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestPackedTypesLite.Builder {
            return ProtobufUnittest.TestPackedTypesLite.classBuilder() as! ProtobufUnittest.TestPackedTypesLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestPackedTypesLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestPackedTypesLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestPackedTypesLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestPackedTypesLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestPackedTypesLite.Builder {
            return try ProtobufUnittest.TestPackedTypesLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestPackedTypesLite) throws -> ProtobufUnittest.TestPackedTypesLite.Builder {
            return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if !packedInt32.isEmpty {
                var jsonArrayPackedInt32:Array<Int> = []
                for oneValuePackedInt32 in packedInt32 {
                    jsonArrayPackedInt32.append(Int(oneValuePackedInt32))
                }
                jsonMap["packedInt32"] = jsonArrayPackedInt32
            }
            if !packedInt64.isEmpty {
                var jsonArrayPackedInt64:Array<String> = []
                for oneValuePackedInt64 in packedInt64 {
                    jsonArrayPackedInt64.append("\(oneValuePackedInt64)")
                }
                jsonMap["packedInt64"] = jsonArrayPackedInt64
            }
            if !packedUint32.isEmpty {
                var jsonArrayPackedUint32:Array<UInt> = []
                for oneValuePackedUint32 in packedUint32 {
                    jsonArrayPackedUint32.append(UInt(oneValuePackedUint32))
                }
                jsonMap["packedUint32"] = jsonArrayPackedUint32
            }
            if !packedUint64.isEmpty {
                var jsonArrayPackedUint64:Array<String> = []
                for oneValuePackedUint64 in packedUint64 {
                    jsonArrayPackedUint64.append("\(oneValuePackedUint64)")
                }
                jsonMap["packedUint64"] = jsonArrayPackedUint64
            }
            if !packedSint32.isEmpty {
                var jsonArrayPackedSint32:Array<Int> = []
                for oneValuePackedSint32 in packedSint32 {
                    jsonArrayPackedSint32.append(Int(oneValuePackedSint32))
                }
                jsonMap["packedSint32"] = jsonArrayPackedSint32
            }
            if !packedSint64.isEmpty {
                var jsonArrayPackedSint64:Array<String> = []
                for oneValuePackedSint64 in packedSint64 {
                    jsonArrayPackedSint64.append("\(oneValuePackedSint64)")
                }
                jsonMap["packedSint64"] = jsonArrayPackedSint64
            }
            if !packedFixed32.isEmpty {
                var jsonArrayPackedFixed32:Array<UInt> = []
                for oneValuePackedFixed32 in packedFixed32 {
                    jsonArrayPackedFixed32.append(UInt(oneValuePackedFixed32))
                }
                jsonMap["packedFixed32"] = jsonArrayPackedFixed32
            }
            if !packedFixed64.isEmpty {
                var jsonArrayPackedFixed64:Array<String> = []
                for oneValuePackedFixed64 in packedFixed64 {
                    jsonArrayPackedFixed64.append("\(oneValuePackedFixed64)")
                }
                jsonMap["packedFixed64"] = jsonArrayPackedFixed64
            }
            if !packedSfixed32.isEmpty {
                var jsonArrayPackedSfixed32:Array<Int> = []
                for oneValuePackedSfixed32 in packedSfixed32 {
                    jsonArrayPackedSfixed32.append(Int(oneValuePackedSfixed32))
                }
                jsonMap["packedSfixed32"] = jsonArrayPackedSfixed32
            }
            if !packedSfixed64.isEmpty {
                var jsonArrayPackedSfixed64:Array<String> = []
                for oneValuePackedSfixed64 in packedSfixed64 {
                    jsonArrayPackedSfixed64.append("\(oneValuePackedSfixed64)")
                }
                jsonMap["packedSfixed64"] = jsonArrayPackedSfixed64
            }
            if !packedFloat.isEmpty {
                var jsonArrayPackedFloat:Array<Float> = []
                for oneValuePackedFloat in packedFloat {
                    jsonArrayPackedFloat.append(Float(oneValuePackedFloat))
                }
                jsonMap["packedFloat"] = jsonArrayPackedFloat
            }
            if !packedDouble.isEmpty {
                var jsonArrayPackedDouble:Array<Double> = []
                for oneValuePackedDouble in packedDouble {
                    jsonArrayPackedDouble.append(Double(oneValuePackedDouble))
                }
                jsonMap["packedDouble"] = jsonArrayPackedDouble
            }
            if !packedBool.isEmpty {
                var jsonArrayPackedBool:Array<Bool> = []
                for oneValuePackedBool in packedBool {
                    jsonArrayPackedBool.append(oneValuePackedBool)
                }
                jsonMap["packedBool"] = jsonArrayPackedBool
            }
            if !packedEnum.isEmpty {
                var jsonArrayPackedEnum:Array<String> = []
                for oneValuePackedEnum in packedEnum {
                    jsonArrayPackedEnum.append(oneValuePackedEnum.toString())
                }
                jsonMap["packedEnum"] = jsonArrayPackedEnum
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestPackedTypesLite {
            return try ProtobufUnittest.TestPackedTypesLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestPackedTypesLite {
            return try ProtobufUnittest.TestPackedTypesLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            var packedInt32ElementIndex:Int = 0
            for oneValuePackedInt32 in packedInt32  {
                output += "\(indent) packedInt32[\(packedInt32ElementIndex)]: \(oneValuePackedInt32)\n"
                packedInt32ElementIndex += 1
            }
            var packedInt64ElementIndex:Int = 0
            for oneValuePackedInt64 in packedInt64  {
                output += "\(indent) packedInt64[\(packedInt64ElementIndex)]: \(oneValuePackedInt64)\n"
                packedInt64ElementIndex += 1
            }
            var packedUint32ElementIndex:Int = 0
            for oneValuePackedUint32 in packedUint32  {
                output += "\(indent) packedUint32[\(packedUint32ElementIndex)]: \(oneValuePackedUint32)\n"
                packedUint32ElementIndex += 1
            }
            var packedUint64ElementIndex:Int = 0
            for oneValuePackedUint64 in packedUint64  {
                output += "\(indent) packedUint64[\(packedUint64ElementIndex)]: \(oneValuePackedUint64)\n"
                packedUint64ElementIndex += 1
            }
            var packedSint32ElementIndex:Int = 0
            for oneValuePackedSint32 in packedSint32  {
                output += "\(indent) packedSint32[\(packedSint32ElementIndex)]: \(oneValuePackedSint32)\n"
                packedSint32ElementIndex += 1
            }
            var packedSint64ElementIndex:Int = 0
            for oneValuePackedSint64 in packedSint64  {
                output += "\(indent) packedSint64[\(packedSint64ElementIndex)]: \(oneValuePackedSint64)\n"
                packedSint64ElementIndex += 1
            }
            var packedFixed32ElementIndex:Int = 0
            for oneValuePackedFixed32 in packedFixed32  {
                output += "\(indent) packedFixed32[\(packedFixed32ElementIndex)]: \(oneValuePackedFixed32)\n"
                packedFixed32ElementIndex += 1
            }
            var packedFixed64ElementIndex:Int = 0
            for oneValuePackedFixed64 in packedFixed64  {
                output += "\(indent) packedFixed64[\(packedFixed64ElementIndex)]: \(oneValuePackedFixed64)\n"
                packedFixed64ElementIndex += 1
            }
            var packedSfixed32ElementIndex:Int = 0
            for oneValuePackedSfixed32 in packedSfixed32  {
                output += "\(indent) packedSfixed32[\(packedSfixed32ElementIndex)]: \(oneValuePackedSfixed32)\n"
                packedSfixed32ElementIndex += 1
            }
            var packedSfixed64ElementIndex:Int = 0
            for oneValuePackedSfixed64 in packedSfixed64  {
                output += "\(indent) packedSfixed64[\(packedSfixed64ElementIndex)]: \(oneValuePackedSfixed64)\n"
                packedSfixed64ElementIndex += 1
            }
            var packedFloatElementIndex:Int = 0
            for oneValuePackedFloat in packedFloat  {
                output += "\(indent) packedFloat[\(packedFloatElementIndex)]: \(oneValuePackedFloat)\n"
                packedFloatElementIndex += 1
            }
            var packedDoubleElementIndex:Int = 0
            for oneValuePackedDouble in packedDouble  {
                output += "\(indent) packedDouble[\(packedDoubleElementIndex)]: \(oneValuePackedDouble)\n"
                packedDoubleElementIndex += 1
            }
            var packedBoolElementIndex:Int = 0
            for oneValuePackedBool in packedBool  {
                output += "\(indent) packedBool[\(packedBoolElementIndex)]: \(oneValuePackedBool)\n"
                packedBoolElementIndex += 1
            }
            var packedEnumElementIndex:Int = 0
            for oneValueOfpackedEnum in packedEnum {
                output += "\(indent) packedEnum[\(packedEnumElementIndex)]: \(oneValueOfpackedEnum.description)\n"
                packedEnumElementIndex += 1
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                for oneValuePackedInt32 in packedInt32 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedInt32.hashValue
                }
                for oneValuePackedInt64 in packedInt64 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedInt64.hashValue
                }
                for oneValuePackedUint32 in packedUint32 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedUint32.hashValue
                }
                for oneValuePackedUint64 in packedUint64 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedUint64.hashValue
                }
                for oneValuePackedSint32 in packedSint32 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedSint32.hashValue
                }
                for oneValuePackedSint64 in packedSint64 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedSint64.hashValue
                }
                for oneValuePackedFixed32 in packedFixed32 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedFixed32.hashValue
                }
                for oneValuePackedFixed64 in packedFixed64 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedFixed64.hashValue
                }
                for oneValuePackedSfixed32 in packedSfixed32 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedSfixed32.hashValue
                }
                for oneValuePackedSfixed64 in packedSfixed64 {
                    hashCode = (hashCode &* 31) &+ oneValuePackedSfixed64.hashValue
                }
                for oneValuePackedFloat in packedFloat {
                    hashCode = (hashCode &* 31) &+ oneValuePackedFloat.hashValue
                }
                for oneValuePackedDouble in packedDouble {
                    hashCode = (hashCode &* 31) &+ oneValuePackedDouble.hashValue
                }
                for oneValuePackedBool in packedBool {
                    hashCode = (hashCode &* 31) &+ oneValuePackedBool.hashValue
                }
                for oneValueOfpackedEnum in packedEnum {
                    hashCode = (hashCode &* 31) &+ oneValueOfpackedEnum.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var packedInt32:Array<Int32> {
                get {
                    return builderResult.packedInt32
                }
                set (array) {
                    builderResult.packedInt32 = array
                }
            }
            @discardableResult
            public func setPackedInt32(_ value:Array<Int32>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedInt32 = value
                return self
            }
            @discardableResult
            public func clearPackedInt32() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedInt32.removeAll(keepingCapacity: false)
                return self
            }
            public var packedInt64:Array<Int64> {
                get {
                    return builderResult.packedInt64
                }
                set (array) {
                    builderResult.packedInt64 = array
                }
            }
            @discardableResult
            public func setPackedInt64(_ value:Array<Int64>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedInt64 = value
                return self
            }
            @discardableResult
            public func clearPackedInt64() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedInt64.removeAll(keepingCapacity: false)
                return self
            }
            public var packedUint32:Array<UInt32> {
                get {
                    return builderResult.packedUint32
                }
                set (array) {
                    builderResult.packedUint32 = array
                }
            }
            @discardableResult
            public func setPackedUint32(_ value:Array<UInt32>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedUint32 = value
                return self
            }
            @discardableResult
            public func clearPackedUint32() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedUint32.removeAll(keepingCapacity: false)
                return self
            }
            public var packedUint64:Array<UInt64> {
                get {
                    return builderResult.packedUint64
                }
                set (array) {
                    builderResult.packedUint64 = array
                }
            }
            @discardableResult
            public func setPackedUint64(_ value:Array<UInt64>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedUint64 = value
                return self
            }
            @discardableResult
            public func clearPackedUint64() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedUint64.removeAll(keepingCapacity: false)
                return self
            }
            public var packedSint32:Array<Int32> {
                get {
                    return builderResult.packedSint32
                }
                set (array) {
                    builderResult.packedSint32 = array
                }
            }
            @discardableResult
            public func setPackedSint32(_ value:Array<Int32>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedSint32 = value
                return self
            }
            @discardableResult
            public func clearPackedSint32() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedSint32.removeAll(keepingCapacity: false)
                return self
            }
            public var packedSint64:Array<Int64> {
                get {
                    return builderResult.packedSint64
                }
                set (array) {
                    builderResult.packedSint64 = array
                }
            }
            @discardableResult
            public func setPackedSint64(_ value:Array<Int64>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedSint64 = value
                return self
            }
            @discardableResult
            public func clearPackedSint64() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedSint64.removeAll(keepingCapacity: false)
                return self
            }
            public var packedFixed32:Array<UInt32> {
                get {
                    return builderResult.packedFixed32
                }
                set (array) {
                    builderResult.packedFixed32 = array
                }
            }
            @discardableResult
            public func setPackedFixed32(_ value:Array<UInt32>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedFixed32 = value
                return self
            }
            @discardableResult
            public func clearPackedFixed32() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedFixed32.removeAll(keepingCapacity: false)
                return self
            }
            public var packedFixed64:Array<UInt64> {
                get {
                    return builderResult.packedFixed64
                }
                set (array) {
                    builderResult.packedFixed64 = array
                }
            }
            @discardableResult
            public func setPackedFixed64(_ value:Array<UInt64>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedFixed64 = value
                return self
            }
            @discardableResult
            public func clearPackedFixed64() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedFixed64.removeAll(keepingCapacity: false)
                return self
            }
            public var packedSfixed32:Array<Int32> {
                get {
                    return builderResult.packedSfixed32
                }
                set (array) {
                    builderResult.packedSfixed32 = array
                }
            }
            @discardableResult
            public func setPackedSfixed32(_ value:Array<Int32>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedSfixed32 = value
                return self
            }
            @discardableResult
            public func clearPackedSfixed32() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedSfixed32.removeAll(keepingCapacity: false)
                return self
            }
            public var packedSfixed64:Array<Int64> {
                get {
                    return builderResult.packedSfixed64
                }
                set (array) {
                    builderResult.packedSfixed64 = array
                }
            }
            @discardableResult
            public func setPackedSfixed64(_ value:Array<Int64>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedSfixed64 = value
                return self
            }
            @discardableResult
            public func clearPackedSfixed64() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedSfixed64.removeAll(keepingCapacity: false)
                return self
            }
            public var packedFloat:Array<Float> {
                get {
                    return builderResult.packedFloat
                }
                set (array) {
                    builderResult.packedFloat = array
                }
            }
            @discardableResult
            public func setPackedFloat(_ value:Array<Float>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedFloat = value
                return self
            }
            @discardableResult
            public func clearPackedFloat() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedFloat.removeAll(keepingCapacity: false)
                return self
            }
            public var packedDouble:Array<Double> {
                get {
                    return builderResult.packedDouble
                }
                set (array) {
                    builderResult.packedDouble = array
                }
            }
            @discardableResult
            public func setPackedDouble(_ value:Array<Double>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedDouble = value
                return self
            }
            @discardableResult
            public func clearPackedDouble() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedDouble.removeAll(keepingCapacity: false)
                return self
            }
            public var packedBool:Array<Bool> {
                get {
                    return builderResult.packedBool
                }
                set (array) {
                    builderResult.packedBool = array
                }
            }
            @discardableResult
            public func setPackedBool(_ value:Array<Bool>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedBool = value
                return self
            }
            @discardableResult
            public func clearPackedBool() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedBool.removeAll(keepingCapacity: false)
                return self
            }
            public var packedEnum:Array<ProtobufUnittest.ForeignEnumLite> {
                get {
                    return builderResult.packedEnum
                }
                set (value) {
                    builderResult.packedEnum = value
                }
            }
            @discardableResult
            public func setPackedEnum(_ value:Array<ProtobufUnittest.ForeignEnumLite>) -> ProtobufUnittest.TestPackedTypesLite.Builder {
                self.packedEnum = value
                return self
            }
            @discardableResult
            public func clearPackedEnum() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult.packedEnum.removeAll(keepingCapacity: false)
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestPackedTypesLite.Builder {
                builderResult = ProtobufUnittest.TestPackedTypesLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestPackedTypesLite.Builder {
                return try ProtobufUnittest.TestPackedTypesLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestPackedTypesLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestPackedTypesLite {
                let returnMe:ProtobufUnittest.TestPackedTypesLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestPackedTypesLite) throws -> ProtobufUnittest.TestPackedTypesLite.Builder {
                if other == ProtobufUnittest.TestPackedTypesLite() {
                    return self
                }
                if !other.packedInt32.isEmpty {
                    builderResult.packedInt32 += other.packedInt32
                }
                if !other.packedInt64.isEmpty {
                    builderResult.packedInt64 += other.packedInt64
                }
                if !other.packedUint32.isEmpty {
                    builderResult.packedUint32 += other.packedUint32
                }
                if !other.packedUint64.isEmpty {
                    builderResult.packedUint64 += other.packedUint64
                }
                if !other.packedSint32.isEmpty {
                    builderResult.packedSint32 += other.packedSint32
                }
                if !other.packedSint64.isEmpty {
                    builderResult.packedSint64 += other.packedSint64
                }
                if !other.packedFixed32.isEmpty {
                    builderResult.packedFixed32 += other.packedFixed32
                }
                if !other.packedFixed64.isEmpty {
                    builderResult.packedFixed64 += other.packedFixed64
                }
                if !other.packedSfixed32.isEmpty {
                    builderResult.packedSfixed32 += other.packedSfixed32
                }
                if !other.packedSfixed64.isEmpty {
                    builderResult.packedSfixed64 += other.packedSfixed64
                }
                if !other.packedFloat.isEmpty {
                    builderResult.packedFloat += other.packedFloat
                }
                if !other.packedDouble.isEmpty {
                    builderResult.packedDouble += other.packedDouble
                }
                if !other.packedBool.isEmpty {
                    builderResult.packedBool += other.packedBool
                }
                if !other.packedEnum.isEmpty {
                     builderResult.packedEnum += other.packedEnum
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestPackedTypesLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedTypesLite.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 722:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedInt32.append(try codedInputStream.readInt32())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 730:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedInt64.append(try codedInputStream.readInt64())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 738:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedUint32.append(try codedInputStream.readUInt32())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 746:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedUint64.append(try codedInputStream.readUInt64())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 754:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedSint32.append(try codedInputStream.readSInt32())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 762:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedSint64.append(try codedInputStream.readSInt64())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 770:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedFixed32.append(try codedInputStream.readFixed32())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 778:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedFixed64.append(try codedInputStream.readFixed64())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 786:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedSfixed32.append(try codedInputStream.readSFixed32())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 794:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedSfixed64.append(try codedInputStream.readSFixed64())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 802:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedFloat.append(try codedInputStream.readFloat())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 810:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedDouble.append(try codedInputStream.readDouble())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 818:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let limit = try codedInputStream.pushLimit(byteLimit: length)
                        while (codedInputStream.bytesUntilLimit() > 0) {
                            builderResult.packedBool.append(try codedInputStream.readBool())
                        }
                        codedInputStream.popLimit(oldLimit: limit)

                    case 826:
                        let length = Int(try codedInputStream.readRawVarint32())
                        let oldLimit = try codedInputStream.pushLimit(byteLimit: length)
                        while codedInputStream.bytesUntilLimit() > 0 {
                        let valueIntpackedEnum = try codedInputStream.readEnum()
                        if let enumspackedEnum = ProtobufUnittest.ForeignEnumLite(rawValue:valueIntpackedEnum) {
                            builderResult.packedEnum.append(enumspackedEnum)
                        } else {
                            try unknownFieldsBuilder.mergeVarintField(fieldNumber: 103, value:Int64(valueIntpackedEnum))
                        }
                        }
                        codedInputStream.popLimit(oldLimit: oldLimit)

                    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.TestPackedTypesLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestPackedTypesLite.Builder()
                if let jsonValuePackedInt32 = jsonMap["packedInt32"] as? Array<Int> {
                    var jsonArrayPackedInt32:Array<Int32> = []
                    for oneValuePackedInt32 in jsonValuePackedInt32 {
                        jsonArrayPackedInt32.append(Int32(oneValuePackedInt32))
                    }
                    resultDecodedBuilder.packedInt32 = jsonArrayPackedInt32
                }
                if let jsonValuePackedInt64 = jsonMap["packedInt64"] as? Array<String> {
                    var jsonArrayPackedInt64:Array<Int64> = []
                    for oneValuePackedInt64 in jsonValuePackedInt64 {
                        jsonArrayPackedInt64.append(Int64(oneValuePackedInt64)!)
                    }
                    resultDecodedBuilder.packedInt64 = jsonArrayPackedInt64
                }
                if let jsonValuePackedUint32 = jsonMap["packedUint32"] as? Array<UInt> {
                    var jsonArrayPackedUint32:Array<UInt32> = []
                    for oneValuePackedUint32 in jsonValuePackedUint32 {
                        jsonArrayPackedUint32.append(UInt32(oneValuePackedUint32))
                    }
                    resultDecodedBuilder.packedUint32 = jsonArrayPackedUint32
                }
                if let jsonValuePackedUint64 = jsonMap["packedUint64"] as? Array<String> {
                    var jsonArrayPackedUint64:Array<UInt64> = []
                    for oneValuePackedUint64 in jsonValuePackedUint64 {
                        jsonArrayPackedUint64.append(UInt64(oneValuePackedUint64)!)
                    }
                    resultDecodedBuilder.packedUint64 = jsonArrayPackedUint64
                }
                if let jsonValuePackedSint32 = jsonMap["packedSint32"] as? Array<Int> {
                    var jsonArrayPackedSint32:Array<Int32> = []
                    for oneValuePackedSint32 in jsonValuePackedSint32 {
                        jsonArrayPackedSint32.append(Int32(oneValuePackedSint32))
                    }
                    resultDecodedBuilder.packedSint32 = jsonArrayPackedSint32
                }
                if let jsonValuePackedSint64 = jsonMap["packedSint64"] as? Array<String> {
                    var jsonArrayPackedSint64:Array<Int64> = []
                    for oneValuePackedSint64 in jsonValuePackedSint64 {
                        jsonArrayPackedSint64.append(Int64(oneValuePackedSint64)!)
                    }
                    resultDecodedBuilder.packedSint64 = jsonArrayPackedSint64
                }
                if let jsonValuePackedFixed32 = jsonMap["packedFixed32"] as? Array<UInt> {
                    var jsonArrayPackedFixed32:Array<UInt32> = []
                    for oneValuePackedFixed32 in jsonValuePackedFixed32 {
                        jsonArrayPackedFixed32.append(UInt32(oneValuePackedFixed32))
                    }
                    resultDecodedBuilder.packedFixed32 = jsonArrayPackedFixed32
                }
                if let jsonValuePackedFixed64 = jsonMap["packedFixed64"] as? Array<String> {
                    var jsonArrayPackedFixed64:Array<UInt64> = []
                    for oneValuePackedFixed64 in jsonValuePackedFixed64 {
                        jsonArrayPackedFixed64.append(UInt64(oneValuePackedFixed64)!)
                    }
                    resultDecodedBuilder.packedFixed64 = jsonArrayPackedFixed64
                }
                if let jsonValuePackedSfixed32 = jsonMap["packedSfixed32"] as? Array<Int> {
                    var jsonArrayPackedSfixed32:Array<Int32> = []
                    for oneValuePackedSfixed32 in jsonValuePackedSfixed32 {
                        jsonArrayPackedSfixed32.append(Int32(oneValuePackedSfixed32))
                    }
                    resultDecodedBuilder.packedSfixed32 = jsonArrayPackedSfixed32
                }
                if let jsonValuePackedSfixed64 = jsonMap["packedSfixed64"] as? Array<String> {
                    var jsonArrayPackedSfixed64:Array<Int64> = []
                    for oneValuePackedSfixed64 in jsonValuePackedSfixed64 {
                        jsonArrayPackedSfixed64.append(Int64(oneValuePackedSfixed64)!)
                    }
                    resultDecodedBuilder.packedSfixed64 = jsonArrayPackedSfixed64
                }
                if let jsonValuePackedFloat = jsonMap["packedFloat"] as? Array<Float> {
                    var jsonArrayPackedFloat:Array<Float> = []
                    for oneValuePackedFloat in jsonValuePackedFloat {
                        jsonArrayPackedFloat.append(Float(oneValuePackedFloat))
                    }
                    resultDecodedBuilder.packedFloat = jsonArrayPackedFloat
                }
                if let jsonValuePackedDouble = jsonMap["packedDouble"] as? Array<Double> {
                    var jsonArrayPackedDouble:Array<Double> = []
                    for oneValuePackedDouble in jsonValuePackedDouble {
                        jsonArrayPackedDouble.append(Double(oneValuePackedDouble))
                    }
                    resultDecodedBuilder.packedDouble = jsonArrayPackedDouble
                }
                if let jsonValuePackedBool = jsonMap["packedBool"] as? Array<Bool> {
                    var jsonArrayPackedBool:Array<Bool> = []
                    for oneValuePackedBool in jsonValuePackedBool {
                        jsonArrayPackedBool.append(oneValuePackedBool)
                    }
                    resultDecodedBuilder.packedBool = jsonArrayPackedBool
                }
                if let jsonValuePackedEnum = jsonMap["packedEnum"] as? Array<String> {
                    var jsonArrayPackedEnum:Array<ProtobufUnittest.ForeignEnumLite> = []
                    for oneValuePackedEnum in jsonValuePackedEnum {
                        let enumFromStringPackedEnum = try ProtobufUnittest.ForeignEnumLite.fromString(oneValuePackedEnum)
                        jsonArrayPackedEnum.append(enumFromStringPackedEnum)
                    }
                    resultDecodedBuilder.packedEnum = jsonArrayPackedEnum
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestPackedTypesLite.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.TestPackedTypesLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class TestAllExtensionsLite : ExtendableMessage {
        public typealias BuilderType = ProtobufUnittest.TestAllExtensionsLite.Builder

        public static func == (lhs: ProtobufUnittest.TestAllExtensionsLite, rhs: ProtobufUnittest.TestAllExtensionsLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && lhs.isEqualExtensionsInOther(otherMessage: rhs, startInclusive:1, endExclusive:536870912)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
            try extensionsAreInitialized()}
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            try writeExtensionsTo(codedOutputStream: codedOutputStream, startInclusive:1, endExclusive:536870912)
            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
            serialize_size += extensionsSerializedSize()
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestAllExtensionsLite.Builder {
            return ProtobufUnittest.TestAllExtensionsLite.classBuilder() as! ProtobufUnittest.TestAllExtensionsLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestAllExtensionsLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestAllExtensionsLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestAllExtensionsLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestAllExtensionsLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestAllExtensionsLite.Builder {
            return try ProtobufUnittest.TestAllExtensionsLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestAllExtensionsLite) throws -> ProtobufUnittest.TestAllExtensionsLite.Builder {
            return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            let jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestAllExtensionsLite {
            return try ProtobufUnittest.TestAllExtensionsLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllExtensionsLite {
            return try ProtobufUnittest.TestAllExtensionsLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            output += try getExtensionDescription(startInclusive:1, endExclusive:536870912, indent:indent)
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                hashCode = (hashCode &* 31) &+ Int(hashExtensionsFrom(startInclusive: 1, endExclusive:536870912))
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            override public var internalGetResult:ExtendableMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestAllExtensionsLite.Builder {
                builderResult = ProtobufUnittest.TestAllExtensionsLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestAllExtensionsLite.Builder {
                return try ProtobufUnittest.TestAllExtensionsLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestAllExtensionsLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestAllExtensionsLite {
                let returnMe:ProtobufUnittest.TestAllExtensionsLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestAllExtensionsLite) throws -> ProtobufUnittest.TestAllExtensionsLite.Builder {
                if other == ProtobufUnittest.TestAllExtensionsLite() {
                    return self
                }
                try mergeExtensionFields(other: other)
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllExtensionsLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllExtensionsLite.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

                    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.TestAllExtensionsLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestAllExtensionsLite.Builder()
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestAllExtensionsLite.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.TestAllExtensionsLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class OptionalGroupExtensionLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.OptionalGroupExtensionLite.Builder

        public static func == (lhs: ProtobufUnittest.OptionalGroupExtensionLite, rhs: ProtobufUnittest.OptionalGroupExtensionLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasA == rhs.hasA) && (!lhs.hasA || lhs.a == rhs.a)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public fileprivate(set) var a:Int32! = nil
        public fileprivate(set) var hasA:Bool = false

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasA {
                try codedOutputStream.writeInt32(fieldNumber: 17, value:a)
            }
            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 hasA {
                serialize_size += a.computeInt32Size(fieldNumber: 17)
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
            return ProtobufUnittest.OptionalGroupExtensionLite.classBuilder() as! ProtobufUnittest.OptionalGroupExtensionLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
            return classBuilder() as! ProtobufUnittest.OptionalGroupExtensionLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.OptionalGroupExtensionLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.OptionalGroupExtensionLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
            return try ProtobufUnittest.OptionalGroupExtensionLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.OptionalGroupExtensionLite) throws -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
            return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasA {
                jsonMap["a"] = Int(a)
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
            return try ProtobufUnittest.OptionalGroupExtensionLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
            return try ProtobufUnittest.OptionalGroupExtensionLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasA {
                output += "\(indent) a: \(String(describing: a)) \n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasA {
                    hashCode = (hashCode &* 31) &+ a.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var a:Int32 {
                get {
                    return builderResult.a
                }
                set (value) {
                    builderResult.hasA = true
                    builderResult.a = value
                }
            }
            public var hasA:Bool {
                get {
                    return builderResult.hasA
                }
            }
            @discardableResult
            public func setA(_ value:Int32) -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
                self.a = value
                return self
            }
            @discardableResult
            public func clearA() -> ProtobufUnittest.OptionalGroupExtensionLite.Builder{
                builderResult.hasA = false
                builderResult.a = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
                builderResult = ProtobufUnittest.OptionalGroupExtensionLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
                return try ProtobufUnittest.OptionalGroupExtensionLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.OptionalGroupExtensionLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.OptionalGroupExtensionLite {
                let returnMe:ProtobufUnittest.OptionalGroupExtensionLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.OptionalGroupExtensionLite) throws -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
                if other == ProtobufUnittest.OptionalGroupExtensionLite() {
                    return self
                }
                if other.hasA {
                    a = other.a
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.OptionalGroupExtensionLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.OptionalGroupExtensionLite.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 136:
                        a = try codedInputStream.readInt32()

                    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.OptionalGroupExtensionLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.OptionalGroupExtensionLite.Builder()
                if let jsonValueA = jsonMap["a"] as? Int {
                    resultDecodedBuilder.a = Int32(jsonValueA)
                } else if let jsonValueA = jsonMap["a"] as? String {
                    resultDecodedBuilder.a = Int32(jsonValueA)!
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.OptionalGroupExtensionLite.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.OptionalGroupExtensionLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class RepeatedGroupExtensionLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.RepeatedGroupExtensionLite.Builder

        public static func == (lhs: ProtobufUnittest.RepeatedGroupExtensionLite, rhs: ProtobufUnittest.RepeatedGroupExtensionLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasA == rhs.hasA) && (!lhs.hasA || lhs.a == rhs.a)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public fileprivate(set) var a:Int32! = nil
        public fileprivate(set) var hasA:Bool = false

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasA {
                try codedOutputStream.writeInt32(fieldNumber: 47, value:a)
            }
            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 hasA {
                serialize_size += a.computeInt32Size(fieldNumber: 47)
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
            return ProtobufUnittest.RepeatedGroupExtensionLite.classBuilder() as! ProtobufUnittest.RepeatedGroupExtensionLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
            return classBuilder() as! ProtobufUnittest.RepeatedGroupExtensionLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.RepeatedGroupExtensionLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.RepeatedGroupExtensionLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
            return try ProtobufUnittest.RepeatedGroupExtensionLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.RepeatedGroupExtensionLite) throws -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
            return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasA {
                jsonMap["a"] = Int(a)
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
            return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
            return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasA {
                output += "\(indent) a: \(String(describing: a)) \n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasA {
                    hashCode = (hashCode &* 31) &+ a.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var a:Int32 {
                get {
                    return builderResult.a
                }
                set (value) {
                    builderResult.hasA = true
                    builderResult.a = value
                }
            }
            public var hasA:Bool {
                get {
                    return builderResult.hasA
                }
            }
            @discardableResult
            public func setA(_ value:Int32) -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
                self.a = value
                return self
            }
            @discardableResult
            public func clearA() -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder{
                builderResult.hasA = false
                builderResult.a = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
                builderResult = ProtobufUnittest.RepeatedGroupExtensionLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
                return try ProtobufUnittest.RepeatedGroupExtensionLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.RepeatedGroupExtensionLite {
                let returnMe:ProtobufUnittest.RepeatedGroupExtensionLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.RepeatedGroupExtensionLite) throws -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
                if other == ProtobufUnittest.RepeatedGroupExtensionLite() {
                    return self
                }
                if other.hasA {
                    a = other.a
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.RepeatedGroupExtensionLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.RepeatedGroupExtensionLite.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 376:
                        a = try codedInputStream.readInt32()

                    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.RepeatedGroupExtensionLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.RepeatedGroupExtensionLite.Builder()
                if let jsonValueA = jsonMap["a"] as? Int {
                    resultDecodedBuilder.a = Int32(jsonValueA)
                } else if let jsonValueA = jsonMap["a"] as? String {
                    resultDecodedBuilder.a = Int32(jsonValueA)!
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.RepeatedGroupExtensionLite.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.RepeatedGroupExtensionLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class TestPackedExtensionsLite : ExtendableMessage {
        public typealias BuilderType = ProtobufUnittest.TestPackedExtensionsLite.Builder

        public static func == (lhs: ProtobufUnittest.TestPackedExtensionsLite, rhs: ProtobufUnittest.TestPackedExtensionsLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && lhs.isEqualExtensionsInOther(otherMessage: rhs, startInclusive:1, endExclusive:536870912)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
            try extensionsAreInitialized()}
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            try writeExtensionsTo(codedOutputStream: codedOutputStream, startInclusive:1, endExclusive:536870912)
            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
            serialize_size += extensionsSerializedSize()
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
            return ProtobufUnittest.TestPackedExtensionsLite.classBuilder() as! ProtobufUnittest.TestPackedExtensionsLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestPackedExtensionsLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestPackedExtensionsLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestPackedExtensionsLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
            return try ProtobufUnittest.TestPackedExtensionsLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestPackedExtensionsLite) throws -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
            return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            let jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestPackedExtensionsLite {
            return try ProtobufUnittest.TestPackedExtensionsLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestPackedExtensionsLite {
            return try ProtobufUnittest.TestPackedExtensionsLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            output += try getExtensionDescription(startInclusive:1, endExclusive:536870912, indent:indent)
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                hashCode = (hashCode &* 31) &+ Int(hashExtensionsFrom(startInclusive: 1, endExclusive:536870912))
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            override public var internalGetResult:ExtendableMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
                builderResult = ProtobufUnittest.TestPackedExtensionsLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
                return try ProtobufUnittest.TestPackedExtensionsLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestPackedExtensionsLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestPackedExtensionsLite {
                let returnMe:ProtobufUnittest.TestPackedExtensionsLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestPackedExtensionsLite) throws -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
                if other == ProtobufUnittest.TestPackedExtensionsLite() {
                    return self
                }
                try mergeExtensionFields(other: other)
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestPackedExtensionsLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedExtensionsLite.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

                    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.TestPackedExtensionsLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestPackedExtensionsLite.Builder()
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestPackedExtensionsLite.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.TestPackedExtensionsLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    final public class TestNestedExtensionLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestNestedExtensionLite.Builder

        public static func == (lhs: ProtobufUnittest.TestNestedExtensionLite, rhs: ProtobufUnittest.TestNestedExtensionLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        public class func nestedExtension() -> ConcreateExtensionField {
               return TestNestedExtensionLitenestedExtension
        }
        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            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
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestNestedExtensionLite.Builder {
            return ProtobufUnittest.TestNestedExtensionLite.classBuilder() as! ProtobufUnittest.TestNestedExtensionLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestNestedExtensionLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestNestedExtensionLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestNestedExtensionLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestNestedExtensionLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestNestedExtensionLite.Builder {
            return try ProtobufUnittest.TestNestedExtensionLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestNestedExtensionLite) throws -> ProtobufUnittest.TestNestedExtensionLite.Builder {
            return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            let jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestNestedExtensionLite {
            return try ProtobufUnittest.TestNestedExtensionLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestNestedExtensionLite {
            return try ProtobufUnittest.TestNestedExtensionLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestNestedExtensionLite.Builder {
                builderResult = ProtobufUnittest.TestNestedExtensionLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestNestedExtensionLite.Builder {
                return try ProtobufUnittest.TestNestedExtensionLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestNestedExtensionLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestNestedExtensionLite {
                let returnMe:ProtobufUnittest.TestNestedExtensionLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestNestedExtensionLite) throws -> ProtobufUnittest.TestNestedExtensionLite.Builder {
                if other == ProtobufUnittest.TestNestedExtensionLite() {
                    return self
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestNestedExtensionLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestNestedExtensionLite.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

                    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.TestNestedExtensionLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestNestedExtensionLite.Builder()
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestNestedExtensionLite.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.TestNestedExtensionLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    /// Test that deprecated fields work.  We only verify that they compile (at one
    /// point this failed).
    final public class TestDeprecatedLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestDeprecatedLite.Builder

        public static func == (lhs: ProtobufUnittest.TestDeprecatedLite, rhs: ProtobufUnittest.TestDeprecatedLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasDeprecatedField == rhs.hasDeprecatedField) && (!lhs.hasDeprecatedField || lhs.deprecatedField == rhs.deprecatedField)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        @available(*, deprecated:0.1, message:"deprecatedField is marked as \"Deprecated\"")
        public fileprivate(set) var deprecatedField:Int32! = nil
        public fileprivate(set) var hasDeprecatedField:Bool = false

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasDeprecatedField {
                try codedOutputStream.writeInt32(fieldNumber: 1, value:deprecatedField)
            }
            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 hasDeprecatedField {
                serialize_size += deprecatedField.computeInt32Size(fieldNumber: 1)
            }
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestDeprecatedLite.Builder {
            return ProtobufUnittest.TestDeprecatedLite.classBuilder() as! ProtobufUnittest.TestDeprecatedLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestDeprecatedLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestDeprecatedLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestDeprecatedLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestDeprecatedLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestDeprecatedLite.Builder {
            return try ProtobufUnittest.TestDeprecatedLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestDeprecatedLite) throws -> ProtobufUnittest.TestDeprecatedLite.Builder {
            return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasDeprecatedField {
                jsonMap["deprecatedField"] = Int(deprecatedField)
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestDeprecatedLite {
            return try ProtobufUnittest.TestDeprecatedLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestDeprecatedLite {
            return try ProtobufUnittest.TestDeprecatedLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasDeprecatedField {
                output += "\(indent) deprecatedField: \(String(describing: deprecatedField)) \n"
            }
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasDeprecatedField {
                    hashCode = (hashCode &* 31) &+ deprecatedField.hashValue
                }
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var deprecatedField:Int32 {
                get {
                    return builderResult.deprecatedField
                }
                set (value) {
                    builderResult.hasDeprecatedField = true
                    builderResult.deprecatedField = value
                }
            }
            public var hasDeprecatedField:Bool {
                get {
                    return builderResult.hasDeprecatedField
                }
            }
            @discardableResult
            public func setDeprecatedField(_ value:Int32) -> ProtobufUnittest.TestDeprecatedLite.Builder {
                self.deprecatedField = value
                return self
            }
            @discardableResult
            public func clearDeprecatedField() -> ProtobufUnittest.TestDeprecatedLite.Builder{
                builderResult.hasDeprecatedField = false
                builderResult.deprecatedField = nil
                return self
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestDeprecatedLite.Builder {
                builderResult = ProtobufUnittest.TestDeprecatedLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestDeprecatedLite.Builder {
                return try ProtobufUnittest.TestDeprecatedLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestDeprecatedLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestDeprecatedLite {
                let returnMe:ProtobufUnittest.TestDeprecatedLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestDeprecatedLite) throws -> ProtobufUnittest.TestDeprecatedLite.Builder {
                if other == ProtobufUnittest.TestDeprecatedLite() {
                    return self
                }
                if other.hasDeprecatedField {
                    deprecatedField = other.deprecatedField
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestDeprecatedLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestDeprecatedLite.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 8:
                        deprecatedField = try codedInputStream.readInt32()

                    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.TestDeprecatedLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestDeprecatedLite.Builder()
                if let jsonValueDeprecatedField = jsonMap["deprecatedField"] as? Int {
                    resultDecodedBuilder.deprecatedField = Int32(jsonValueDeprecatedField)
                } else if let jsonValueDeprecatedField = jsonMap["deprecatedField"] as? String {
                    resultDecodedBuilder.deprecatedField = Int32(jsonValueDeprecatedField)!
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestDeprecatedLite.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.TestDeprecatedLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    /// See the comments of the same type in unittest.proto.
    final public class TestParsingMergeLite : ExtendableMessage {
        public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.Builder

        public static func == (lhs: ProtobufUnittest.TestParsingMergeLite, rhs: ProtobufUnittest.TestParsingMergeLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && (lhs.hasRequiredAllTypes == rhs.hasRequiredAllTypes) && (!lhs.hasRequiredAllTypes || lhs.requiredAllTypes == rhs.requiredAllTypes)
            fieldCheck = fieldCheck && (lhs.hasOptionalAllTypes == rhs.hasOptionalAllTypes) && (!lhs.hasOptionalAllTypes || lhs.optionalAllTypes == rhs.optionalAllTypes)
            fieldCheck = fieldCheck && (lhs.repeatedAllTypes == rhs.repeatedAllTypes)
            fieldCheck = fieldCheck && (lhs.hasOptionalGroup == rhs.hasOptionalGroup) && (!lhs.hasOptionalGroup || lhs.optionalGroup == rhs.optionalGroup)
            fieldCheck = fieldCheck && (lhs.repeatedGroup == rhs.repeatedGroup)
            fieldCheck = fieldCheck && lhs.isEqualExtensionsInOther(otherMessage: rhs, startInclusive:1000, endExclusive:536870912)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }



        //Nested type declaration start

        final public class RepeatedFieldsGenerator : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder

            public static func == (lhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator, rhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.field1 == rhs.field1)
                fieldCheck = fieldCheck && (lhs.field2 == rhs.field2)
                fieldCheck = fieldCheck && (lhs.field3 == rhs.field3)
                fieldCheck = fieldCheck && (lhs.group1 == rhs.group1)
                fieldCheck = fieldCheck && (lhs.group2 == rhs.group2)
                fieldCheck = fieldCheck && (lhs.ext1 == rhs.ext1)
                fieldCheck = fieldCheck && (lhs.ext2 == rhs.ext2)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }



            //Nested type declaration start

            final public class Group1 : GeneratedMessage {
                public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder

                public static func == (lhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1, rhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1) -> Bool {
                    if lhs === rhs {
                        return true
                    }
                    var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                    fieldCheck = fieldCheck && (lhs.hasField1 == rhs.hasField1) && (!lhs.hasField1 || lhs.field1 == rhs.field1)
                    fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                    return fieldCheck
                }

                public fileprivate(set) var field1:ProtobufUnittest.TestAllTypesLite!
                public fileprivate(set) var hasField1:Bool = false
                required public init() {
                    super.init()
                }
                override public func isInitialized() throws {
                }
                override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                    if hasField1 {
                        try codedOutputStream.writeMessage(fieldNumber: 11, value:field1)
                    }
                    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 hasField1 {
                        if let varSizefield1 = field1?.computeMessageSize(fieldNumber: 11) {
                            serialize_size += varSizefield1
                        }
                    }
                    serialize_size += unknownFields.serializedSize()
                    memoizedSerializedSize = serialize_size
                    return serialize_size
                }
                public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder
                }
                public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                    return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder
                }
                override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder()
                }
                override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder()
                }
                public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.builderWithPrototype(prototype:self)
                }
                public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(other:prototype)
                }
                override public func encode() throws -> Dictionary<String,Any> {
                    try isInitialized()
                    var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                    if hasField1 {
                        jsonMap["field1"] = try field1.encode()
                    }
                    return jsonMap
                }
                override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder.decodeToBuilder(jsonMap:jsonMap).build()
                }
                override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder.fromJSONToBuilder(data:data, options:options).build()
                }
                override public func getDescription(indent:String) throws -> String {
                    var output = ""
                    if hasField1 {
                        output += "\(indent) field1 {\n"
                        if let outDescField1 = field1 {
                            output += try outDescField1.getDescription(indent: "\(indent)  ")
                        }
                        output += "\(indent) }\n"
                    }
                    output += unknownFields.getDescription(indent: indent)
                    return output
                }
                override public var hashValue:Int {
                    get {
                        var hashCode:Int = 7
                        if hasField1 {
                            if let hashValuefield1 = field1?.hashValue {
                                hashCode = (hashCode &* 31) &+ hashValuefield1
                            }
                        }
                        hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                        return hashCode
                    }
                }


                //Meta information declaration start

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

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

                    required override public init () {
                        super.init()
                    }
                    public var field1:ProtobufUnittest.TestAllTypesLite! {
                        get {
                            if field1Builder_ != nil {
                                builderResult.field1 = field1Builder_.getMessage()
                            }
                            return builderResult.field1
                        }
                        set (value) {
                            builderResult.hasField1 = value != nil
                            builderResult.field1 = value
                        }
                    }
                    public var hasField1:Bool {
                        get {
                            return builderResult.hasField1
                        }
                    }
                    fileprivate var field1Builder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                        didSet {
                            builderResult.hasField1 = true
                        }
                    }
                    public func getField1Builder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                        if field1Builder_ == nil {
                            field1Builder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                            builderResult.field1 = field1Builder_.getMessage()
                            if field1 != nil {
                                try! field1Builder_.mergeFrom(other: field1)
                            }
                        }
                        return field1Builder_
                    }
                    @discardableResult
                    public func setField1(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        self.field1 = value
                        return self
                    }
                    @discardableResult
                    public func mergeField1(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        if builderResult.hasField1 {
                            builderResult.field1 = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.field1).mergeFrom(other: value).buildPartial()
                        } else {
                            builderResult.field1 = value
                        }
                        builderResult.hasField1 = true
                        return self
                    }
                    @discardableResult
                    public func clearField1() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        field1Builder_ = nil
                        builderResult.hasField1 = false
                        builderResult.field1 = nil
                        return self
                    }
                    override public var internalGetResult:GeneratedMessage {
                        get {
                            return builderResult
                        }
                    }
                    @discardableResult
                    override public func clear() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        builderResult = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1()
                        return self
                    }
                    override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.builderWithPrototype(prototype:builderResult)
                    }
                    override public func build() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
                        try checkInitialized()
                        return buildPartial()
                    }
                    public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
                        let returnMe:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 = builderResult
                        return returnMe
                    }
                    @discardableResult
                    public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        if other == ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1() {
                            return self
                        }
                        if (other.hasField1) {
                            try mergeField1(value: other.field1)
                        }
                        try merge(unknownField: other.unknownFields)
                        return self
                    }
                    @discardableResult
                    override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                    }
                    @discardableResult
                    override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.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 90:
                                let subBuilder:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                                if hasField1 {
                                    try subBuilder.mergeFrom(other: field1)
                                }
                                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                                field1 = 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.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder {
                        let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder()
                        if let jsonValueField1 = jsonMap["field1"] as? Dictionary<String,Any> {
                            resultDecodedBuilder.field1 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueField1).build()

                        }
                        return resultDecodedBuilder
                    }
                    override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.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.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder.decodeToBuilder(jsonMap:jsDataCast)
                    }
                }

            }

            //Nested type declaration end



            //Nested type declaration start

            final public class Group2 : GeneratedMessage {
                public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder

                public static func == (lhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2, rhs: ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2) -> Bool {
                    if lhs === rhs {
                        return true
                    }
                    var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                    fieldCheck = fieldCheck && (lhs.hasField1 == rhs.hasField1) && (!lhs.hasField1 || lhs.field1 == rhs.field1)
                    fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                    return fieldCheck
                }

                public fileprivate(set) var field1:ProtobufUnittest.TestAllTypesLite!
                public fileprivate(set) var hasField1:Bool = false
                required public init() {
                    super.init()
                }
                override public func isInitialized() throws {
                }
                override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                    if hasField1 {
                        try codedOutputStream.writeMessage(fieldNumber: 21, value:field1)
                    }
                    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 hasField1 {
                        if let varSizefield1 = field1?.computeMessageSize(fieldNumber: 21) {
                            serialize_size += varSizefield1
                        }
                    }
                    serialize_size += unknownFields.serializedSize()
                    memoizedSerializedSize = serialize_size
                    return serialize_size
                }
                public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder
                }
                public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                    return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder
                }
                override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder()
                }
                override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                    return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder()
                }
                public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.builderWithPrototype(prototype:self)
                }
                public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(other:prototype)
                }
                override public func encode() throws -> Dictionary<String,Any> {
                    try isInitialized()
                    var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                    if hasField1 {
                        jsonMap["field1"] = try field1.encode()
                    }
                    return jsonMap
                }
                override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder.decodeToBuilder(jsonMap:jsonMap).build()
                }
                override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder.fromJSONToBuilder(data:data, options:options).build()
                }
                override public func getDescription(indent:String) throws -> String {
                    var output = ""
                    if hasField1 {
                        output += "\(indent) field1 {\n"
                        if let outDescField1 = field1 {
                            output += try outDescField1.getDescription(indent: "\(indent)  ")
                        }
                        output += "\(indent) }\n"
                    }
                    output += unknownFields.getDescription(indent: indent)
                    return output
                }
                override public var hashValue:Int {
                    get {
                        var hashCode:Int = 7
                        if hasField1 {
                            if let hashValuefield1 = field1?.hashValue {
                                hashCode = (hashCode &* 31) &+ hashValuefield1
                            }
                        }
                        hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                        return hashCode
                    }
                }


                //Meta information declaration start

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

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

                    required override public init () {
                        super.init()
                    }
                    public var field1:ProtobufUnittest.TestAllTypesLite! {
                        get {
                            if field1Builder_ != nil {
                                builderResult.field1 = field1Builder_.getMessage()
                            }
                            return builderResult.field1
                        }
                        set (value) {
                            builderResult.hasField1 = value != nil
                            builderResult.field1 = value
                        }
                    }
                    public var hasField1:Bool {
                        get {
                            return builderResult.hasField1
                        }
                    }
                    fileprivate var field1Builder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                        didSet {
                            builderResult.hasField1 = true
                        }
                    }
                    public func getField1Builder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                        if field1Builder_ == nil {
                            field1Builder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                            builderResult.field1 = field1Builder_.getMessage()
                            if field1 != nil {
                                try! field1Builder_.mergeFrom(other: field1)
                            }
                        }
                        return field1Builder_
                    }
                    @discardableResult
                    public func setField1(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        self.field1 = value
                        return self
                    }
                    @discardableResult
                    public func mergeField1(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        if builderResult.hasField1 {
                            builderResult.field1 = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.field1).mergeFrom(other: value).buildPartial()
                        } else {
                            builderResult.field1 = value
                        }
                        builderResult.hasField1 = true
                        return self
                    }
                    @discardableResult
                    public func clearField1() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        field1Builder_ = nil
                        builderResult.hasField1 = false
                        builderResult.field1 = nil
                        return self
                    }
                    override public var internalGetResult:GeneratedMessage {
                        get {
                            return builderResult
                        }
                    }
                    @discardableResult
                    override public func clear() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        builderResult = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2()
                        return self
                    }
                    override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.builderWithPrototype(prototype:builderResult)
                    }
                    override public func build() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
                        try checkInitialized()
                        return buildPartial()
                    }
                    public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
                        let returnMe:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 = builderResult
                        return returnMe
                    }
                    @discardableResult
                    public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        if other == ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2() {
                            return self
                        }
                        if (other.hasField1) {
                            try mergeField1(value: other.field1)
                        }
                        try merge(unknownField: other.unknownFields)
                        return self
                    }
                    @discardableResult
                    override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                    }
                    @discardableResult
                    override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.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 170:
                                let subBuilder:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                                if hasField1 {
                                    try subBuilder.mergeFrom(other: field1)
                                }
                                try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                                field1 = 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.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder {
                        let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder()
                        if let jsonValueField1 = jsonMap["field1"] as? Dictionary<String,Any> {
                            resultDecodedBuilder.field1 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueField1).build()

                        }
                        return resultDecodedBuilder
                    }
                    override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.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.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder.decodeToBuilder(jsonMap:jsDataCast)
                    }
                }

            }

            //Nested type declaration end

            public fileprivate(set) var field1:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
            public fileprivate(set) var field2:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
            public fileprivate(set) var field3:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
            public fileprivate(set) var group1:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1>  = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1>()
            public fileprivate(set) var group2:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2>  = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2>()
            public fileprivate(set) var ext1:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
            public fileprivate(set) var ext2:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                for oneElementField1 in field1 {
                      try codedOutputStream.writeMessage(fieldNumber: 1, value:oneElementField1)
                }
                for oneElementField2 in field2 {
                      try codedOutputStream.writeMessage(fieldNumber: 2, value:oneElementField2)
                }
                for oneElementField3 in field3 {
                      try codedOutputStream.writeMessage(fieldNumber: 3, value:oneElementField3)
                }
                for oneElementGroup1 in group1 {
                      try codedOutputStream.writeGroup(fieldNumber: 10, value:oneElementGroup1)
                }
                for oneElementGroup2 in group2 {
                      try codedOutputStream.writeGroup(fieldNumber: 20, value:oneElementGroup2)
                }
                for oneElementExt1 in ext1 {
                      try codedOutputStream.writeMessage(fieldNumber: 1000, value:oneElementExt1)
                }
                for oneElementExt2 in ext2 {
                      try codedOutputStream.writeMessage(fieldNumber: 1001, value:oneElementExt2)
                }
                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
                for oneElementField1 in field1 {
                    serialize_size += oneElementField1.computeMessageSize(fieldNumber: 1)
                }
                for oneElementField2 in field2 {
                    serialize_size += oneElementField2.computeMessageSize(fieldNumber: 2)
                }
                for oneElementField3 in field3 {
                    serialize_size += oneElementField3.computeMessageSize(fieldNumber: 3)
                }
                for oneElementGroup1 in group1 {
                    serialize_size += oneElementGroup1.computeGroupSize(fieldNumber: 10)
                }
                for oneElementGroup2 in group2 {
                    serialize_size += oneElementGroup2.computeGroupSize(fieldNumber: 20)
                }
                for oneElementExt1 in ext1 {
                    serialize_size += oneElementExt1.computeMessageSize(fieldNumber: 1000)
                }
                for oneElementExt2 in ext2 {
                    serialize_size += oneElementExt2.computeMessageSize(fieldNumber: 1001)
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if !field1.isEmpty {
                    var jsonArrayField1:Array<Dictionary<String,Any>> = []
                    for oneValueField1 in field1 {
                        let ecodedMessageField1 = try oneValueField1.encode()
                        jsonArrayField1.append(ecodedMessageField1)
                    }
                    jsonMap["field1"] = jsonArrayField1
                }
                if !field2.isEmpty {
                    var jsonArrayField2:Array<Dictionary<String,Any>> = []
                    for oneValueField2 in field2 {
                        let ecodedMessageField2 = try oneValueField2.encode()
                        jsonArrayField2.append(ecodedMessageField2)
                    }
                    jsonMap["field2"] = jsonArrayField2
                }
                if !field3.isEmpty {
                    var jsonArrayField3:Array<Dictionary<String,Any>> = []
                    for oneValueField3 in field3 {
                        let ecodedMessageField3 = try oneValueField3.encode()
                        jsonArrayField3.append(ecodedMessageField3)
                    }
                    jsonMap["field3"] = jsonArrayField3
                }
                if !group1.isEmpty {
                    var jsonArrayGroup1:Array<Dictionary<String,Any>> = []
                    for oneValueGroup1 in group1 {
                        let ecodedMessageGroup1 = try oneValueGroup1.encode()
                        jsonArrayGroup1.append(ecodedMessageGroup1)
                    }
                    jsonMap["group1"] = jsonArrayGroup1
                }
                if !group2.isEmpty {
                    var jsonArrayGroup2:Array<Dictionary<String,Any>> = []
                    for oneValueGroup2 in group2 {
                        let ecodedMessageGroup2 = try oneValueGroup2.encode()
                        jsonArrayGroup2.append(ecodedMessageGroup2)
                    }
                    jsonMap["group2"] = jsonArrayGroup2
                }
                if !ext1.isEmpty {
                    var jsonArrayExt1:Array<Dictionary<String,Any>> = []
                    for oneValueExt1 in ext1 {
                        let ecodedMessageExt1 = try oneValueExt1.encode()
                        jsonArrayExt1.append(ecodedMessageExt1)
                    }
                    jsonMap["ext1"] = jsonArrayExt1
                }
                if !ext2.isEmpty {
                    var jsonArrayExt2:Array<Dictionary<String,Any>> = []
                    for oneValueExt2 in ext2 {
                        let ecodedMessageExt2 = try oneValueExt2.encode()
                        jsonArrayExt2.append(ecodedMessageExt2)
                    }
                    jsonMap["ext2"] = jsonArrayExt2
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                var field1ElementIndex:Int = 0
                for oneElementField1 in field1 {
                    output += "\(indent) field1[\(field1ElementIndex)] {\n"
                    output += try oneElementField1.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    field1ElementIndex += 1
                }
                var field2ElementIndex:Int = 0
                for oneElementField2 in field2 {
                    output += "\(indent) field2[\(field2ElementIndex)] {\n"
                    output += try oneElementField2.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    field2ElementIndex += 1
                }
                var field3ElementIndex:Int = 0
                for oneElementField3 in field3 {
                    output += "\(indent) field3[\(field3ElementIndex)] {\n"
                    output += try oneElementField3.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    field3ElementIndex += 1
                }
                var group1ElementIndex:Int = 0
                for oneElementGroup1 in group1 {
                    output += "\(indent) group1[\(group1ElementIndex)] {\n"
                    output += try oneElementGroup1.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    group1ElementIndex += 1
                }
                var group2ElementIndex:Int = 0
                for oneElementGroup2 in group2 {
                    output += "\(indent) group2[\(group2ElementIndex)] {\n"
                    output += try oneElementGroup2.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    group2ElementIndex += 1
                }
                var ext1ElementIndex:Int = 0
                for oneElementExt1 in ext1 {
                    output += "\(indent) ext1[\(ext1ElementIndex)] {\n"
                    output += try oneElementExt1.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    ext1ElementIndex += 1
                }
                var ext2ElementIndex:Int = 0
                for oneElementExt2 in ext2 {
                    output += "\(indent) ext2[\(ext2ElementIndex)] {\n"
                    output += try oneElementExt2.getDescription(indent: "\(indent)  ")
                    output += "\(indent)}\n"
                    ext2ElementIndex += 1
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    for oneElementField1 in field1 {
                        hashCode = (hashCode &* 31) &+ oneElementField1.hashValue
                    }
                    for oneElementField2 in field2 {
                        hashCode = (hashCode &* 31) &+ oneElementField2.hashValue
                    }
                    for oneElementField3 in field3 {
                        hashCode = (hashCode &* 31) &+ oneElementField3.hashValue
                    }
                    for oneElementGroup1 in group1 {
                        hashCode = (hashCode &* 31) &+ oneElementGroup1.hashValue
                    }
                    for oneElementGroup2 in group2 {
                        hashCode = (hashCode &* 31) &+ oneElementGroup2.hashValue
                    }
                    for oneElementExt1 in ext1 {
                        hashCode = (hashCode &* 31) &+ oneElementExt1.hashValue
                    }
                    for oneElementExt2 in ext2 {
                        hashCode = (hashCode &* 31) &+ oneElementExt2.hashValue
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var field1:Array<ProtobufUnittest.TestAllTypesLite> {
                    get {
                        return builderResult.field1
                    }
                    set (value) {
                        builderResult.field1 = value
                    }
                }
                @discardableResult
                public func setField1(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.field1 = value
                    return self
                }
                @discardableResult
                public func clearField1() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.field1.removeAll(keepingCapacity: false)
                    return self
                }
                public var field2:Array<ProtobufUnittest.TestAllTypesLite> {
                    get {
                        return builderResult.field2
                    }
                    set (value) {
                        builderResult.field2 = value
                    }
                }
                @discardableResult
                public func setField2(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.field2 = value
                    return self
                }
                @discardableResult
                public func clearField2() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.field2.removeAll(keepingCapacity: false)
                    return self
                }
                public var field3:Array<ProtobufUnittest.TestAllTypesLite> {
                    get {
                        return builderResult.field3
                    }
                    set (value) {
                        builderResult.field3 = value
                    }
                }
                @discardableResult
                public func setField3(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.field3 = value
                    return self
                }
                @discardableResult
                public func clearField3() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.field3.removeAll(keepingCapacity: false)
                    return self
                }
                public var group1:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1> {
                    get {
                        return builderResult.group1
                    }
                    set (value) {
                        builderResult.group1 = value
                    }
                }
                @discardableResult
                public func setGroup1(_ value:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.group1 = value
                    return self
                }
                @discardableResult
                public func clearGroup1() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.group1.removeAll(keepingCapacity: false)
                    return self
                }
                public var group2:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2> {
                    get {
                        return builderResult.group2
                    }
                    set (value) {
                        builderResult.group2 = value
                    }
                }
                @discardableResult
                public func setGroup2(_ value:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.group2 = value
                    return self
                }
                @discardableResult
                public func clearGroup2() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.group2.removeAll(keepingCapacity: false)
                    return self
                }
                public var ext1:Array<ProtobufUnittest.TestAllTypesLite> {
                    get {
                        return builderResult.ext1
                    }
                    set (value) {
                        builderResult.ext1 = value
                    }
                }
                @discardableResult
                public func setExt1(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.ext1 = value
                    return self
                }
                @discardableResult
                public func clearExt1() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.ext1.removeAll(keepingCapacity: false)
                    return self
                }
                public var ext2:Array<ProtobufUnittest.TestAllTypesLite> {
                    get {
                        return builderResult.ext2
                    }
                    set (value) {
                        builderResult.ext2 = value
                    }
                }
                @discardableResult
                public func setExt2(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    self.ext2 = value
                    return self
                }
                @discardableResult
                public func clearExt2() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult.ext2.removeAll(keepingCapacity: false)
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    builderResult = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
                    let returnMe:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    if other == ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator() {
                        return self
                    }
                    if !other.field1.isEmpty  {
                         builderResult.field1 += other.field1
                    }
                    if !other.field2.isEmpty  {
                         builderResult.field2 += other.field2
                    }
                    if !other.field3.isEmpty  {
                         builderResult.field3 += other.field3
                    }
                    if !other.group1.isEmpty  {
                         builderResult.group1 += other.group1
                    }
                    if !other.group2.isEmpty  {
                         builderResult.group2 += other.group2
                    }
                    if !other.ext1.isEmpty  {
                         builderResult.ext1 += other.ext1
                    }
                    if !other.ext2.isEmpty  {
                         builderResult.ext2 += other.ext2
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.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 = ProtobufUnittest.TestAllTypesLite.Builder()
                            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                            field1.append(subBuilder.buildPartial())

                        case 18:
                            let subBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                            field2.append(subBuilder.buildPartial())

                        case 26:
                            let subBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                            field3.append(subBuilder.buildPartial())

                        case 83:
                            let subBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder()
                            try codedInputStream.readGroup(fieldNumber:10, builder:subBuilder,extensionRegistry:extensionRegistry)
                            group1.append(subBuilder.buildPartial())

                        case 163:
                            let subBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder()
                            try codedInputStream.readGroup(fieldNumber:20, builder:subBuilder,extensionRegistry:extensionRegistry)
                            group2.append(subBuilder.buildPartial())

                        case 8002:
                            let subBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                            ext1.append(subBuilder.buildPartial())

                        case 8010:
                            let subBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                            try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                            ext2.append(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.TestParsingMergeLite.RepeatedFieldsGenerator.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder()
                    if let jsonValueField1 = jsonMap["field1"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayField1:Array<ProtobufUnittest.TestAllTypesLite> = []
                        for oneValueField1 in jsonValueField1 {
                            let messageFromStringField1 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueField1).build()

                            jsonArrayField1.append(messageFromStringField1)
                        }
                        resultDecodedBuilder.field1 = jsonArrayField1
                    }
                    if let jsonValueField2 = jsonMap["field2"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayField2:Array<ProtobufUnittest.TestAllTypesLite> = []
                        for oneValueField2 in jsonValueField2 {
                            let messageFromStringField2 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueField2).build()

                            jsonArrayField2.append(messageFromStringField2)
                        }
                        resultDecodedBuilder.field2 = jsonArrayField2
                    }
                    if let jsonValueField3 = jsonMap["field3"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayField3:Array<ProtobufUnittest.TestAllTypesLite> = []
                        for oneValueField3 in jsonValueField3 {
                            let messageFromStringField3 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueField3).build()

                            jsonArrayField3.append(messageFromStringField3)
                        }
                        resultDecodedBuilder.field3 = jsonArrayField3
                    }
                    if let jsonValueGroup1 = jsonMap["group1"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayGroup1:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1> = []
                        for oneValueGroup1 in jsonValueGroup1 {
                            let messageFromStringGroup1 = try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder.decodeToBuilder(jsonMap:oneValueGroup1).build()

                            jsonArrayGroup1.append(messageFromStringGroup1)
                        }
                        resultDecodedBuilder.group1 = jsonArrayGroup1
                    }
                    if let jsonValueGroup2 = jsonMap["group2"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayGroup2:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2> = []
                        for oneValueGroup2 in jsonValueGroup2 {
                            let messageFromStringGroup2 = try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder.decodeToBuilder(jsonMap:oneValueGroup2).build()

                            jsonArrayGroup2.append(messageFromStringGroup2)
                        }
                        resultDecodedBuilder.group2 = jsonArrayGroup2
                    }
                    if let jsonValueExt1 = jsonMap["ext1"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayExt1:Array<ProtobufUnittest.TestAllTypesLite> = []
                        for oneValueExt1 in jsonValueExt1 {
                            let messageFromStringExt1 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueExt1).build()

                            jsonArrayExt1.append(messageFromStringExt1)
                        }
                        resultDecodedBuilder.ext1 = jsonArrayExt1
                    }
                    if let jsonValueExt2 = jsonMap["ext2"] as? Array<Dictionary<String,Any>> {
                        var jsonArrayExt2:Array<ProtobufUnittest.TestAllTypesLite> = []
                        for oneValueExt2 in jsonValueExt2 {
                            let messageFromStringExt2 = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueExt2).build()

                            jsonArrayExt2.append(messageFromStringExt2)
                        }
                        resultDecodedBuilder.ext2 = jsonArrayExt2
                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.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.TestParsingMergeLite.RepeatedFieldsGenerator.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end



        //Nested type declaration start

        final public class OptionalGroup : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder

            public static func == (lhs: ProtobufUnittest.TestParsingMergeLite.OptionalGroup, rhs: ProtobufUnittest.TestParsingMergeLite.OptionalGroup) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.hasOptionalGroupAllTypes == rhs.hasOptionalGroupAllTypes) && (!lhs.hasOptionalGroupAllTypes || lhs.optionalGroupAllTypes == rhs.optionalGroupAllTypes)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }

            public fileprivate(set) var optionalGroupAllTypes:ProtobufUnittest.TestAllTypesLite!
            public fileprivate(set) var hasOptionalGroupAllTypes:Bool = false
            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                if hasOptionalGroupAllTypes {
                    try codedOutputStream.writeMessage(fieldNumber: 11, value:optionalGroupAllTypes)
                }
                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 hasOptionalGroupAllTypes {
                    if let varSizeoptionalGroupAllTypes = optionalGroupAllTypes?.computeMessageSize(fieldNumber: 11) {
                        serialize_size += varSizeoptionalGroupAllTypes
                    }
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                return ProtobufUnittest.TestParsingMergeLite.OptionalGroup.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite.OptionalGroup) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if hasOptionalGroupAllTypes {
                    jsonMap["optionalGroupAllTypes"] = try optionalGroupAllTypes.encode()
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
                return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
                return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                if hasOptionalGroupAllTypes {
                    output += "\(indent) optionalGroupAllTypes {\n"
                    if let outDescOptionalGroupAllTypes = optionalGroupAllTypes {
                        output += try outDescOptionalGroupAllTypes.getDescription(indent: "\(indent)  ")
                    }
                    output += "\(indent) }\n"
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasOptionalGroupAllTypes {
                        if let hashValueoptionalGroupAllTypes = optionalGroupAllTypes?.hashValue {
                            hashCode = (hashCode &* 31) &+ hashValueoptionalGroupAllTypes
                        }
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var optionalGroupAllTypes:ProtobufUnittest.TestAllTypesLite! {
                    get {
                        if optionalGroupAllTypesBuilder_ != nil {
                            builderResult.optionalGroupAllTypes = optionalGroupAllTypesBuilder_.getMessage()
                        }
                        return builderResult.optionalGroupAllTypes
                    }
                    set (value) {
                        builderResult.hasOptionalGroupAllTypes = value != nil
                        builderResult.optionalGroupAllTypes = value
                    }
                }
                public var hasOptionalGroupAllTypes:Bool {
                    get {
                        return builderResult.hasOptionalGroupAllTypes
                    }
                }
                fileprivate var optionalGroupAllTypesBuilder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                    didSet {
                        builderResult.hasOptionalGroupAllTypes = true
                    }
                }
                public func getOptionalGroupAllTypesBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                    if optionalGroupAllTypesBuilder_ == nil {
                        optionalGroupAllTypesBuilder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                        builderResult.optionalGroupAllTypes = optionalGroupAllTypesBuilder_.getMessage()
                        if optionalGroupAllTypes != nil {
                            try! optionalGroupAllTypesBuilder_.mergeFrom(other: optionalGroupAllTypes)
                        }
                    }
                    return optionalGroupAllTypesBuilder_
                }
                @discardableResult
                public func setOptionalGroupAllTypes(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    self.optionalGroupAllTypes = value
                    return self
                }
                @discardableResult
                public func mergeOptionalGroupAllTypes(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    if builderResult.hasOptionalGroupAllTypes {
                        builderResult.optionalGroupAllTypes = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.optionalGroupAllTypes).mergeFrom(other: value).buildPartial()
                    } else {
                        builderResult.optionalGroupAllTypes = value
                    }
                    builderResult.hasOptionalGroupAllTypes = true
                    return self
                }
                @discardableResult
                public func clearOptionalGroupAllTypes() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    optionalGroupAllTypesBuilder_ = nil
                    builderResult.hasOptionalGroupAllTypes = false
                    builderResult.optionalGroupAllTypes = nil
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    builderResult = ProtobufUnittest.TestParsingMergeLite.OptionalGroup()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
                    let returnMe:ProtobufUnittest.TestParsingMergeLite.OptionalGroup = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite.OptionalGroup) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    if other == ProtobufUnittest.TestParsingMergeLite.OptionalGroup() {
                        return self
                    }
                    if (other.hasOptionalGroupAllTypes) {
                        try mergeOptionalGroupAllTypes(value: other.optionalGroupAllTypes)
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.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 90:
                            let subBuilder:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                            if hasOptionalGroupAllTypes {
                                try subBuilder.mergeFrom(other: optionalGroupAllTypes)
                            }
                            try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                            optionalGroupAllTypes = 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.TestParsingMergeLite.OptionalGroup.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder()
                    if let jsonValueOptionalGroupAllTypes = jsonMap["optionalGroupAllTypes"] as? Dictionary<String,Any> {
                        resultDecodedBuilder.optionalGroupAllTypes = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueOptionalGroupAllTypes).build()

                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.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.TestParsingMergeLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end



        //Nested type declaration start

        final public class RepeatedGroup : GeneratedMessage {
            public typealias BuilderType = ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder

            public static func == (lhs: ProtobufUnittest.TestParsingMergeLite.RepeatedGroup, rhs: ProtobufUnittest.TestParsingMergeLite.RepeatedGroup) -> Bool {
                if lhs === rhs {
                    return true
                }
                var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
                fieldCheck = fieldCheck && (lhs.hasRepeatedGroupAllTypes == rhs.hasRepeatedGroupAllTypes) && (!lhs.hasRepeatedGroupAllTypes || lhs.repeatedGroupAllTypes == rhs.repeatedGroupAllTypes)
                fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
                return fieldCheck
            }

            public fileprivate(set) var repeatedGroupAllTypes:ProtobufUnittest.TestAllTypesLite!
            public fileprivate(set) var hasRepeatedGroupAllTypes:Bool = false
            required public init() {
                super.init()
            }
            override public func isInitialized() throws {
            }
            override public func writeTo(codedOutputStream: CodedOutputStream) throws {
                if hasRepeatedGroupAllTypes {
                    try codedOutputStream.writeMessage(fieldNumber: 21, value:repeatedGroupAllTypes)
                }
                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 hasRepeatedGroupAllTypes {
                    if let varSizerepeatedGroupAllTypes = repeatedGroupAllTypes?.computeMessageSize(fieldNumber: 21) {
                        serialize_size += varSizerepeatedGroupAllTypes
                    }
                }
                serialize_size += unknownFields.serializedSize()
                memoizedSerializedSize = serialize_size
                return serialize_size
            }
            public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder
            }
            public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder
            }
            override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder()
            }
            override public func classBuilder() -> ProtocolBuffersMessageBuilder {
                return ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder()
            }
            public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.builderWithPrototype(prototype:self)
            }
            public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite.RepeatedGroup) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(other:prototype)
            }
            override public func encode() throws -> Dictionary<String,Any> {
                try isInitialized()
                var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
                if hasRepeatedGroupAllTypes {
                    jsonMap["repeatedGroupAllTypes"] = try repeatedGroupAllTypes.encode()
                }
                return jsonMap
            }
            override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:jsonMap).build()
            }
            override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
                return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder.fromJSONToBuilder(data:data, options:options).build()
            }
            override public func getDescription(indent:String) throws -> String {
                var output = ""
                if hasRepeatedGroupAllTypes {
                    output += "\(indent) repeatedGroupAllTypes {\n"
                    if let outDescRepeatedGroupAllTypes = repeatedGroupAllTypes {
                        output += try outDescRepeatedGroupAllTypes.getDescription(indent: "\(indent)  ")
                    }
                    output += "\(indent) }\n"
                }
                output += unknownFields.getDescription(indent: indent)
                return output
            }
            override public var hashValue:Int {
                get {
                    var hashCode:Int = 7
                    if hasRepeatedGroupAllTypes {
                        if let hashValuerepeatedGroupAllTypes = repeatedGroupAllTypes?.hashValue {
                            hashCode = (hashCode &* 31) &+ hashValuerepeatedGroupAllTypes
                        }
                    }
                    hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                    return hashCode
                }
            }


            //Meta information declaration start

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

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

                required override public init () {
                    super.init()
                }
                public var repeatedGroupAllTypes:ProtobufUnittest.TestAllTypesLite! {
                    get {
                        if repeatedGroupAllTypesBuilder_ != nil {
                            builderResult.repeatedGroupAllTypes = repeatedGroupAllTypesBuilder_.getMessage()
                        }
                        return builderResult.repeatedGroupAllTypes
                    }
                    set (value) {
                        builderResult.hasRepeatedGroupAllTypes = value != nil
                        builderResult.repeatedGroupAllTypes = value
                    }
                }
                public var hasRepeatedGroupAllTypes:Bool {
                    get {
                        return builderResult.hasRepeatedGroupAllTypes
                    }
                }
                fileprivate var repeatedGroupAllTypesBuilder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                    didSet {
                        builderResult.hasRepeatedGroupAllTypes = true
                    }
                }
                public func getRepeatedGroupAllTypesBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                    if repeatedGroupAllTypesBuilder_ == nil {
                        repeatedGroupAllTypesBuilder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                        builderResult.repeatedGroupAllTypes = repeatedGroupAllTypesBuilder_.getMessage()
                        if repeatedGroupAllTypes != nil {
                            try! repeatedGroupAllTypesBuilder_.mergeFrom(other: repeatedGroupAllTypes)
                        }
                    }
                    return repeatedGroupAllTypesBuilder_
                }
                @discardableResult
                public func setRepeatedGroupAllTypes(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    self.repeatedGroupAllTypes = value
                    return self
                }
                @discardableResult
                public func mergeRepeatedGroupAllTypes(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    if builderResult.hasRepeatedGroupAllTypes {
                        builderResult.repeatedGroupAllTypes = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.repeatedGroupAllTypes).mergeFrom(other: value).buildPartial()
                    } else {
                        builderResult.repeatedGroupAllTypes = value
                    }
                    builderResult.hasRepeatedGroupAllTypes = true
                    return self
                }
                @discardableResult
                public func clearRepeatedGroupAllTypes() -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    repeatedGroupAllTypesBuilder_ = nil
                    builderResult.hasRepeatedGroupAllTypes = false
                    builderResult.repeatedGroupAllTypes = nil
                    return self
                }
                override public var internalGetResult:GeneratedMessage {
                    get {
                        return builderResult
                    }
                }
                @discardableResult
                override public func clear() -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    builderResult = ProtobufUnittest.TestParsingMergeLite.RepeatedGroup()
                    return self
                }
                override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.builderWithPrototype(prototype:builderResult)
                }
                override public func build() throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
                    try checkInitialized()
                    return buildPartial()
                }
                public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
                    let returnMe:ProtobufUnittest.TestParsingMergeLite.RepeatedGroup = builderResult
                    return returnMe
                }
                @discardableResult
                public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite.RepeatedGroup) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    if other == ProtobufUnittest.TestParsingMergeLite.RepeatedGroup() {
                        return self
                    }
                    if (other.hasRepeatedGroupAllTypes) {
                        try mergeRepeatedGroupAllTypes(value: other.repeatedGroupAllTypes)
                    }
                    try merge(unknownField: other.unknownFields)
                    return self
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder {
                    return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
                }
                @discardableResult
                override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.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 170:
                            let subBuilder:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                            if hasRepeatedGroupAllTypes {
                                try subBuilder.mergeFrom(other: repeatedGroupAllTypes)
                            }
                            try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                            repeatedGroupAllTypes = 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.TestParsingMergeLite.RepeatedGroup.Builder {
                    let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder()
                    if let jsonValueRepeatedGroupAllTypes = jsonMap["repeatedGroupAllTypes"] as? Dictionary<String,Any> {
                        resultDecodedBuilder.repeatedGroupAllTypes = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueRepeatedGroupAllTypes).build()

                    }
                    return resultDecodedBuilder
                }
                override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.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.TestParsingMergeLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:jsDataCast)
                }
            }

        }

        //Nested type declaration end

        public fileprivate(set) var requiredAllTypes:ProtobufUnittest.TestAllTypesLite!
        public fileprivate(set) var hasRequiredAllTypes:Bool = false
        public fileprivate(set) var optionalAllTypes:ProtobufUnittest.TestAllTypesLite!
        public fileprivate(set) var hasOptionalAllTypes:Bool = false
        public fileprivate(set) var repeatedAllTypes:Array<ProtobufUnittest.TestAllTypesLite>  = Array<ProtobufUnittest.TestAllTypesLite>()
        public fileprivate(set) var optionalGroup:ProtobufUnittest.TestParsingMergeLite.OptionalGroup!
        public fileprivate(set) var hasOptionalGroup:Bool = false
        public fileprivate(set) var repeatedGroup:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup>  = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup>()
        public class func optionalExt() -> ConcreateExtensionField {
               return TestParsingMergeLiteoptionalExt
        }
        public class func repeatedExt() -> ConcreateExtensionField {
               return TestParsingMergeLiterepeatedExt
        }
        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
            if !hasRequiredAllTypes {
                throw ProtocolBuffersError.invalidProtocolBuffer("Uninitialized Message \(ProtobufUnittest.TestParsingMergeLite.self): field \"requiredAllTypes\" mark required")
            }
            try extensionsAreInitialized()}
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            if hasRequiredAllTypes {
                try codedOutputStream.writeMessage(fieldNumber: 1, value:requiredAllTypes)
            }
            if hasOptionalAllTypes {
                try codedOutputStream.writeMessage(fieldNumber: 2, value:optionalAllTypes)
            }
            for oneElementRepeatedAllTypes in repeatedAllTypes {
                  try codedOutputStream.writeMessage(fieldNumber: 3, value:oneElementRepeatedAllTypes)
            }
            if hasOptionalGroup {
                try codedOutputStream.writeGroup(fieldNumber: 10, value:optionalGroup)
            }
            for oneElementRepeatedGroup in repeatedGroup {
                  try codedOutputStream.writeGroup(fieldNumber: 20, value:oneElementRepeatedGroup)
            }
            try writeExtensionsTo(codedOutputStream: codedOutputStream, startInclusive:1000, endExclusive:536870912)
            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 hasRequiredAllTypes {
                if let varSizerequiredAllTypes = requiredAllTypes?.computeMessageSize(fieldNumber: 1) {
                    serialize_size += varSizerequiredAllTypes
                }
            }
            if hasOptionalAllTypes {
                if let varSizeoptionalAllTypes = optionalAllTypes?.computeMessageSize(fieldNumber: 2) {
                    serialize_size += varSizeoptionalAllTypes
                }
            }
            for oneElementRepeatedAllTypes in repeatedAllTypes {
                serialize_size += oneElementRepeatedAllTypes.computeMessageSize(fieldNumber: 3)
            }
            if hasOptionalGroup {
                if let varSizeoptionalGroup = optionalGroup?.computeGroupSize(fieldNumber: 10) {
                    serialize_size += varSizeoptionalGroup
                }
            }
            for oneElementRepeatedGroup in repeatedGroup {
                serialize_size += oneElementRepeatedGroup.computeGroupSize(fieldNumber: 20)
            }
            serialize_size += extensionsSerializedSize()
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.Builder {
            return ProtobufUnittest.TestParsingMergeLite.classBuilder() as! ProtobufUnittest.TestParsingMergeLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestParsingMergeLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestParsingMergeLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestParsingMergeLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestParsingMergeLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
            return try ProtobufUnittest.TestParsingMergeLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestParsingMergeLite) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
            return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            var jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            if hasRequiredAllTypes {
                jsonMap["requiredAllTypes"] = try requiredAllTypes.encode()
            }
            if hasOptionalAllTypes {
                jsonMap["optionalAllTypes"] = try optionalAllTypes.encode()
            }
            if !repeatedAllTypes.isEmpty {
                var jsonArrayRepeatedAllTypes:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedAllTypes in repeatedAllTypes {
                    let ecodedMessageRepeatedAllTypes = try oneValueRepeatedAllTypes.encode()
                    jsonArrayRepeatedAllTypes.append(ecodedMessageRepeatedAllTypes)
                }
                jsonMap["repeatedAllTypes"] = jsonArrayRepeatedAllTypes
            }
            if hasOptionalGroup {
                jsonMap["optionalgroup"] = try optionalGroup.encode()
            }
            if !repeatedGroup.isEmpty {
                var jsonArrayRepeatedGroup:Array<Dictionary<String,Any>> = []
                for oneValueRepeatedGroup in repeatedGroup {
                    let ecodedMessageRepeatedGroup = try oneValueRepeatedGroup.encode()
                    jsonArrayRepeatedGroup.append(ecodedMessageRepeatedGroup)
                }
                jsonMap["repeatedgroup"] = jsonArrayRepeatedGroup
            }
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestParsingMergeLite {
            return try ProtobufUnittest.TestParsingMergeLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite {
            return try ProtobufUnittest.TestParsingMergeLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            if hasRequiredAllTypes {
                output += "\(indent) requiredAllTypes {\n"
                if let outDescRequiredAllTypes = requiredAllTypes {
                    output += try outDescRequiredAllTypes.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            if hasOptionalAllTypes {
                output += "\(indent) optionalAllTypes {\n"
                if let outDescOptionalAllTypes = optionalAllTypes {
                    output += try outDescOptionalAllTypes.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            var repeatedAllTypesElementIndex:Int = 0
            for oneElementRepeatedAllTypes in repeatedAllTypes {
                output += "\(indent) repeatedAllTypes[\(repeatedAllTypesElementIndex)] {\n"
                output += try oneElementRepeatedAllTypes.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedAllTypesElementIndex += 1
            }
            if hasOptionalGroup {
                output += "\(indent) optionalGroup {\n"
                if let outDescOptionalGroup = optionalGroup {
                    output += try outDescOptionalGroup.getDescription(indent: "\(indent)  ")
                }
                output += "\(indent) }\n"
            }
            var repeatedGroupElementIndex:Int = 0
            for oneElementRepeatedGroup in repeatedGroup {
                output += "\(indent) repeatedGroup[\(repeatedGroupElementIndex)] {\n"
                output += try oneElementRepeatedGroup.getDescription(indent: "\(indent)  ")
                output += "\(indent)}\n"
                repeatedGroupElementIndex += 1
            }
            output += try getExtensionDescription(startInclusive:1000, endExclusive:536870912, indent:indent)
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                if hasRequiredAllTypes {
                    if let hashValuerequiredAllTypes = requiredAllTypes?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValuerequiredAllTypes
                    }
                }
                if hasOptionalAllTypes {
                    if let hashValueoptionalAllTypes = optionalAllTypes?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalAllTypes
                    }
                }
                for oneElementRepeatedAllTypes in repeatedAllTypes {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedAllTypes.hashValue
                }
                if hasOptionalGroup {
                    if let hashValueoptionalGroup = optionalGroup?.hashValue {
                        hashCode = (hashCode &* 31) &+ hashValueoptionalGroup
                    }
                }
                for oneElementRepeatedGroup in repeatedGroup {
                    hashCode = (hashCode &* 31) &+ oneElementRepeatedGroup.hashValue
                }
                hashCode = (hashCode &* 31) &+ Int(hashExtensionsFrom(startInclusive: 1000, endExclusive:536870912))
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            public var requiredAllTypes:ProtobufUnittest.TestAllTypesLite! {
                get {
                    if requiredAllTypesBuilder_ != nil {
                        builderResult.requiredAllTypes = requiredAllTypesBuilder_.getMessage()
                    }
                    return builderResult.requiredAllTypes
                }
                set (value) {
                    builderResult.hasRequiredAllTypes = value != nil
                    builderResult.requiredAllTypes = value
                }
            }
            public var hasRequiredAllTypes:Bool {
                get {
                    return builderResult.hasRequiredAllTypes
                }
            }
            fileprivate var requiredAllTypesBuilder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                didSet {
                    builderResult.hasRequiredAllTypes = true
                }
            }
            public func getRequiredAllTypesBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                if requiredAllTypesBuilder_ == nil {
                    requiredAllTypesBuilder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                    builderResult.requiredAllTypes = requiredAllTypesBuilder_.getMessage()
                    if requiredAllTypes != nil {
                        try! requiredAllTypesBuilder_.mergeFrom(other: requiredAllTypes)
                    }
                }
                return requiredAllTypesBuilder_
            }
            @discardableResult
            public func setRequiredAllTypes(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.Builder {
                self.requiredAllTypes = value
                return self
            }
            @discardableResult
            public func mergeRequiredAllTypes(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                if builderResult.hasRequiredAllTypes {
                    builderResult.requiredAllTypes = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.requiredAllTypes).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.requiredAllTypes = value
                }
                builderResult.hasRequiredAllTypes = true
                return self
            }
            @discardableResult
            public func clearRequiredAllTypes() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                requiredAllTypesBuilder_ = nil
                builderResult.hasRequiredAllTypes = false
                builderResult.requiredAllTypes = nil
                return self
            }
            public var optionalAllTypes:ProtobufUnittest.TestAllTypesLite! {
                get {
                    if optionalAllTypesBuilder_ != nil {
                        builderResult.optionalAllTypes = optionalAllTypesBuilder_.getMessage()
                    }
                    return builderResult.optionalAllTypes
                }
                set (value) {
                    builderResult.hasOptionalAllTypes = value != nil
                    builderResult.optionalAllTypes = value
                }
            }
            public var hasOptionalAllTypes:Bool {
                get {
                    return builderResult.hasOptionalAllTypes
                }
            }
            fileprivate var optionalAllTypesBuilder_:ProtobufUnittest.TestAllTypesLite.Builder! {
                didSet {
                    builderResult.hasOptionalAllTypes = true
                }
            }
            public func getOptionalAllTypesBuilder() -> ProtobufUnittest.TestAllTypesLite.Builder {
                if optionalAllTypesBuilder_ == nil {
                    optionalAllTypesBuilder_ = ProtobufUnittest.TestAllTypesLite.Builder()
                    builderResult.optionalAllTypes = optionalAllTypesBuilder_.getMessage()
                    if optionalAllTypes != nil {
                        try! optionalAllTypesBuilder_.mergeFrom(other: optionalAllTypes)
                    }
                }
                return optionalAllTypesBuilder_
            }
            @discardableResult
            public func setOptionalAllTypes(_ value:ProtobufUnittest.TestAllTypesLite!) -> ProtobufUnittest.TestParsingMergeLite.Builder {
                self.optionalAllTypes = value
                return self
            }
            @discardableResult
            public func mergeOptionalAllTypes(value:ProtobufUnittest.TestAllTypesLite) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                if builderResult.hasOptionalAllTypes {
                    builderResult.optionalAllTypes = try ProtobufUnittest.TestAllTypesLite.builderWithPrototype(prototype:builderResult.optionalAllTypes).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalAllTypes = value
                }
                builderResult.hasOptionalAllTypes = true
                return self
            }
            @discardableResult
            public func clearOptionalAllTypes() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                optionalAllTypesBuilder_ = nil
                builderResult.hasOptionalAllTypes = false
                builderResult.optionalAllTypes = nil
                return self
            }
            public var repeatedAllTypes:Array<ProtobufUnittest.TestAllTypesLite> {
                get {
                    return builderResult.repeatedAllTypes
                }
                set (value) {
                    builderResult.repeatedAllTypes = value
                }
            }
            @discardableResult
            public func setRepeatedAllTypes(_ value:Array<ProtobufUnittest.TestAllTypesLite>) -> ProtobufUnittest.TestParsingMergeLite.Builder {
                self.repeatedAllTypes = value
                return self
            }
            @discardableResult
            public func clearRepeatedAllTypes() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                builderResult.repeatedAllTypes.removeAll(keepingCapacity: false)
                return self
            }
            public var optionalGroup:ProtobufUnittest.TestParsingMergeLite.OptionalGroup! {
                get {
                    if optionalGroupBuilder_ != nil {
                        builderResult.optionalGroup = optionalGroupBuilder_.getMessage()
                    }
                    return builderResult.optionalGroup
                }
                set (value) {
                    builderResult.hasOptionalGroup = value != nil
                    builderResult.optionalGroup = value
                }
            }
            public var hasOptionalGroup:Bool {
                get {
                    return builderResult.hasOptionalGroup
                }
            }
            fileprivate var optionalGroupBuilder_:ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder! {
                didSet {
                    builderResult.hasOptionalGroup = true
                }
            }
            public func getOptionalGroupBuilder() -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder {
                if optionalGroupBuilder_ == nil {
                    optionalGroupBuilder_ = ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder()
                    builderResult.optionalGroup = optionalGroupBuilder_.getMessage()
                    if optionalGroup != nil {
                        try! optionalGroupBuilder_.mergeFrom(other: optionalGroup)
                    }
                }
                return optionalGroupBuilder_
            }
            @discardableResult
            public func setOptionalGroup(_ value:ProtobufUnittest.TestParsingMergeLite.OptionalGroup!) -> ProtobufUnittest.TestParsingMergeLite.Builder {
                self.optionalGroup = value
                return self
            }
            @discardableResult
            public func mergeOptionalGroup(value:ProtobufUnittest.TestParsingMergeLite.OptionalGroup) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                if builderResult.hasOptionalGroup {
                    builderResult.optionalGroup = try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.builderWithPrototype(prototype:builderResult.optionalGroup).mergeFrom(other: value).buildPartial()
                } else {
                    builderResult.optionalGroup = value
                }
                builderResult.hasOptionalGroup = true
                return self
            }
            @discardableResult
            public func clearOptionalGroup() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                optionalGroupBuilder_ = nil
                builderResult.hasOptionalGroup = false
                builderResult.optionalGroup = nil
                return self
            }
            public var repeatedGroup:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup> {
                get {
                    return builderResult.repeatedGroup
                }
                set (value) {
                    builderResult.repeatedGroup = value
                }
            }
            @discardableResult
            public func setRepeatedGroup(_ value:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup>) -> ProtobufUnittest.TestParsingMergeLite.Builder {
                self.repeatedGroup = value
                return self
            }
            @discardableResult
            public func clearRepeatedGroup() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                builderResult.repeatedGroup.removeAll(keepingCapacity: false)
                return self
            }
            override public var internalGetResult:ExtendableMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestParsingMergeLite.Builder {
                builderResult = ProtobufUnittest.TestParsingMergeLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                return try ProtobufUnittest.TestParsingMergeLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestParsingMergeLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestParsingMergeLite {
                let returnMe:ProtobufUnittest.TestParsingMergeLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestParsingMergeLite) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                if other == ProtobufUnittest.TestParsingMergeLite() {
                    return self
                }
                if (other.hasRequiredAllTypes) {
                    try mergeRequiredAllTypes(value: other.requiredAllTypes)
                }
                if (other.hasOptionalAllTypes) {
                    try mergeOptionalAllTypes(value: other.optionalAllTypes)
                }
                if !other.repeatedAllTypes.isEmpty  {
                     builderResult.repeatedAllTypes += other.repeatedAllTypes
                }
                if (other.hasOptionalGroup) {
                    try mergeOptionalGroup(value: other.optionalGroup)
                }
                if !other.repeatedGroup.isEmpty  {
                     builderResult.repeatedGroup += other.repeatedGroup
                }
                try mergeExtensionFields(other: other)
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.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:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                        if hasRequiredAllTypes {
                            try subBuilder.mergeFrom(other: requiredAllTypes)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        requiredAllTypes = subBuilder.buildPartial()

                    case 18:
                        let subBuilder:ProtobufUnittest.TestAllTypesLite.Builder = ProtobufUnittest.TestAllTypesLite.Builder()
                        if hasOptionalAllTypes {
                            try subBuilder.mergeFrom(other: optionalAllTypes)
                        }
                        try codedInputStream.readMessage(builder: subBuilder, extensionRegistry:extensionRegistry)
                        optionalAllTypes = subBuilder.buildPartial()

                    case 26:
                        let subBuilder = ProtobufUnittest.TestAllTypesLite.Builder()
                        try codedInputStream.readMessage(builder: subBuilder,extensionRegistry:extensionRegistry)
                        repeatedAllTypes.append(subBuilder.buildPartial())

                    case 83:
                        let subBuilder:ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder = ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder()
                        if hasOptionalGroup {
                            try subBuilder.mergeFrom(other: optionalGroup)
                        }
                        try codedInputStream.readGroup(fieldNumber: 10, builder:subBuilder, extensionRegistry:extensionRegistry)
                        optionalGroup = subBuilder.buildPartial()

                    case 163:
                        let subBuilder = ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder()
                        try codedInputStream.readGroup(fieldNumber:20, builder:subBuilder,extensionRegistry:extensionRegistry)
                        repeatedGroup.append(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.TestParsingMergeLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestParsingMergeLite.Builder()
                if let jsonValueRequiredAllTypes = jsonMap["requiredAllTypes"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.requiredAllTypes = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueRequiredAllTypes).build()

                }
                if let jsonValueOptionalAllTypes = jsonMap["optionalAllTypes"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalAllTypes = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:jsonValueOptionalAllTypes).build()

                }
                if let jsonValueRepeatedAllTypes = jsonMap["repeatedAllTypes"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedAllTypes:Array<ProtobufUnittest.TestAllTypesLite> = []
                    for oneValueRepeatedAllTypes in jsonValueRepeatedAllTypes {
                        let messageFromStringRepeatedAllTypes = try ProtobufUnittest.TestAllTypesLite.Builder.decodeToBuilder(jsonMap:oneValueRepeatedAllTypes).build()

                        jsonArrayRepeatedAllTypes.append(messageFromStringRepeatedAllTypes)
                    }
                    resultDecodedBuilder.repeatedAllTypes = jsonArrayRepeatedAllTypes
                }
                if let jsonValueOptionalGroup = jsonMap["optionalgroup"] as? Dictionary<String,Any> {
                    resultDecodedBuilder.optionalGroup = try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder.decodeToBuilder(jsonMap:jsonValueOptionalGroup).build()

                }
                if let jsonValueRepeatedGroup = jsonMap["repeatedgroup"] as? Array<Dictionary<String,Any>> {
                    var jsonArrayRepeatedGroup:Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup> = []
                    for oneValueRepeatedGroup in jsonValueRepeatedGroup {
                        let messageFromStringRepeatedGroup = try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder.decodeToBuilder(jsonMap:oneValueRepeatedGroup).build()

                        jsonArrayRepeatedGroup.append(messageFromStringRepeatedGroup)
                    }
                    resultDecodedBuilder.repeatedGroup = jsonArrayRepeatedGroup
                }
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestParsingMergeLite.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.TestParsingMergeLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    /// TestEmptyMessageLite is used to test unknown fields support in lite mode.
    final public class TestEmptyMessageLite : GeneratedMessage {
        public typealias BuilderType = ProtobufUnittest.TestEmptyMessageLite.Builder

        public static func == (lhs: ProtobufUnittest.TestEmptyMessageLite, rhs: ProtobufUnittest.TestEmptyMessageLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
        }
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            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
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestEmptyMessageLite.Builder {
            return ProtobufUnittest.TestEmptyMessageLite.classBuilder() as! ProtobufUnittest.TestEmptyMessageLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestEmptyMessageLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestEmptyMessageLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestEmptyMessageLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestEmptyMessageLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestEmptyMessageLite.Builder {
            return try ProtobufUnittest.TestEmptyMessageLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestEmptyMessageLite) throws -> ProtobufUnittest.TestEmptyMessageLite.Builder {
            return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            let jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestEmptyMessageLite {
            return try ProtobufUnittest.TestEmptyMessageLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestEmptyMessageLite {
            return try ProtobufUnittest.TestEmptyMessageLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            override public var internalGetResult:GeneratedMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestEmptyMessageLite.Builder {
                builderResult = ProtobufUnittest.TestEmptyMessageLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestEmptyMessageLite.Builder {
                return try ProtobufUnittest.TestEmptyMessageLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestEmptyMessageLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestEmptyMessageLite {
                let returnMe:ProtobufUnittest.TestEmptyMessageLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestEmptyMessageLite) throws -> ProtobufUnittest.TestEmptyMessageLite.Builder {
                if other == ProtobufUnittest.TestEmptyMessageLite() {
                    return self
                }
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestEmptyMessageLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageLite.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

                    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.TestEmptyMessageLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestEmptyMessageLite.Builder()
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestEmptyMessageLite.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.TestEmptyMessageLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

    /// Like above, but declare all field numbers as potential extensions.  No
    /// actual extensions should ever be defined for this type.
    final public class TestEmptyMessageWithExtensionsLite : ExtendableMessage {
        public typealias BuilderType = ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder

        public static func == (lhs: ProtobufUnittest.TestEmptyMessageWithExtensionsLite, rhs: ProtobufUnittest.TestEmptyMessageWithExtensionsLite) -> Bool {
            if lhs === rhs {
                return true
            }
            var fieldCheck:Bool = (lhs.hashValue == rhs.hashValue)
            fieldCheck = fieldCheck && lhs.isEqualExtensionsInOther(otherMessage: rhs, startInclusive:1, endExclusive:536870912)
            fieldCheck = (fieldCheck && (lhs.unknownFields == rhs.unknownFields))
            return fieldCheck
        }

        required public init() {
            super.init()
        }
        override public func isInitialized() throws {
            try extensionsAreInitialized()}
        override public func writeTo(codedOutputStream: CodedOutputStream) throws {
            try writeExtensionsTo(codedOutputStream: codedOutputStream, startInclusive:1, endExclusive:536870912)
            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
            serialize_size += extensionsSerializedSize()
            serialize_size += unknownFields.serializedSize()
            memoizedSerializedSize = serialize_size
            return serialize_size
        }
        public class func getBuilder() -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
            return ProtobufUnittest.TestEmptyMessageWithExtensionsLite.classBuilder() as! ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder
        }
        public func getBuilder() -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
            return classBuilder() as! ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder
        }
        override public class func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder()
        }
        override public func classBuilder() -> ProtocolBuffersMessageBuilder {
            return ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder()
        }
        public func toBuilder() throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
            return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.builderWithPrototype(prototype:self)
        }
        public class func builderWithPrototype(prototype:ProtobufUnittest.TestEmptyMessageWithExtensionsLite) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
            return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(other:prototype)
        }
        override public func encode() throws -> Dictionary<String,Any> {
            try isInitialized()
            let jsonMap:Dictionary<String,Any> = Dictionary<String,Any>()
            return jsonMap
        }
        override class public func decode(jsonMap:Dictionary<String,Any>) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
            return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder.decodeToBuilder(jsonMap:jsonMap).build()
        }
        override class public func fromJSON(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
            return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder.fromJSONToBuilder(data:data, options:options).build()
        }
        override public func getDescription(indent:String) throws -> String {
            var output = ""
            output += try getExtensionDescription(startInclusive:1, endExclusive:536870912, indent:indent)
            output += unknownFields.getDescription(indent: indent)
            return output
        }
        override public var hashValue:Int {
            get {
                var hashCode:Int = 7
                hashCode = (hashCode &* 31) &+ Int(hashExtensionsFrom(startInclusive: 1, endExclusive:536870912))
                hashCode = (hashCode &* 31) &+  unknownFields.hashValue
                return hashCode
            }
        }


        //Meta information declaration start

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

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

            required override public init () {
                super.init()
            }
            override public var internalGetResult:ExtendableMessage {
                get {
                    return builderResult
                }
            }
            @discardableResult
            override public func clear() -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
                builderResult = ProtobufUnittest.TestEmptyMessageWithExtensionsLite()
                return self
            }
            override public func clone() throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
                return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.builderWithPrototype(prototype:builderResult)
            }
            override public func build() throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
                try checkInitialized()
                return buildPartial()
            }
            public func buildPartial() -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
                let returnMe:ProtobufUnittest.TestEmptyMessageWithExtensionsLite = builderResult
                return returnMe
            }
            @discardableResult
            public func mergeFrom(other:ProtobufUnittest.TestEmptyMessageWithExtensionsLite) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
                if other == ProtobufUnittest.TestEmptyMessageWithExtensionsLite() {
                    return self
                }
                try mergeExtensionFields(other: other)
                try merge(unknownField: other.unknownFields)
                return self
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder {
                return try mergeFrom(codedInputStream: codedInputStream, extensionRegistry:ExtensionRegistry())
            }
            @discardableResult
            override public func mergeFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.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

                    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.TestEmptyMessageWithExtensionsLite.Builder {
                let resultDecodedBuilder = ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder()
                return resultDecodedBuilder
            }
            override class public func fromJSONToBuilder(data:Data, options: JSONSerialization.ReadingOptions = []) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite.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.TestEmptyMessageWithExtensionsLite.Builder.decodeToBuilder(jsonMap:jsDataCast)
            }
        }

    }

}
extension ProtobufUnittest.TestAllTypesLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestAllTypesLite> {
        var mergedArray = Array<ProtobufUnittest.TestAllTypesLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite? {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite {
        return try ProtobufUnittest.TestAllTypesLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "optionalInt32": return self.optionalInt32
        case "optionalInt64": return self.optionalInt64
        case "optionalUint32": return self.optionalUint32
        case "optionalUint64": return self.optionalUint64
        case "optionalSint32": return self.optionalSint32
        case "optionalSint64": return self.optionalSint64
        case "optionalFixed32": return self.optionalFixed32
        case "optionalFixed64": return self.optionalFixed64
        case "optionalSfixed32": return self.optionalSfixed32
        case "optionalSfixed64": return self.optionalSfixed64
        case "optionalFloat": return self.optionalFloat
        case "optionalDouble": return self.optionalDouble
        case "optionalBool": return self.optionalBool
        case "optionalString": return self.optionalString
        case "optionalBytes": return self.optionalBytes
        case "optionalGroup": return self.optionalGroup
        case "optionalNestedMessage": return self.optionalNestedMessage
        case "optionalForeignMessage": return self.optionalForeignMessage
        case "optionalImportMessage": return self.optionalImportMessage
        case "optionalNestedEnum": return self.optionalNestedEnum
        case "optionalForeignEnum": return self.optionalForeignEnum
        case "optionalImportEnum": return self.optionalImportEnum
        case "optionalStringPiece": return self.optionalStringPiece
        case "optionalCord": return self.optionalCord
        case "optionalPublicImportMessage": return self.optionalPublicImportMessage
        case "optionalLazyMessage": return self.optionalLazyMessage
        case "repeatedInt32": return self.repeatedInt32
        case "repeatedInt64": return self.repeatedInt64
        case "repeatedUint32": return self.repeatedUint32
        case "repeatedUint64": return self.repeatedUint64
        case "repeatedSint32": return self.repeatedSint32
        case "repeatedSint64": return self.repeatedSint64
        case "repeatedFixed32": return self.repeatedFixed32
        case "repeatedFixed64": return self.repeatedFixed64
        case "repeatedSfixed32": return self.repeatedSfixed32
        case "repeatedSfixed64": return self.repeatedSfixed64
        case "repeatedFloat": return self.repeatedFloat
        case "repeatedDouble": return self.repeatedDouble
        case "repeatedBool": return self.repeatedBool
        case "repeatedString": return self.repeatedString
        case "repeatedBytes": return self.repeatedBytes
        case "repeatedGroup": return self.repeatedGroup
        case "repeatedNestedMessage": return self.repeatedNestedMessage
        case "repeatedForeignMessage": return self.repeatedForeignMessage
        case "repeatedImportMessage": return self.repeatedImportMessage
        case "repeatedNestedEnum": return self.repeatedNestedEnum
        case "repeatedForeignEnum": return self.repeatedForeignEnum
        case "repeatedImportEnum": return self.repeatedImportEnum
        case "repeatedStringPiece": return self.repeatedStringPiece
        case "repeatedCord": return self.repeatedCord
        case "repeatedLazyMessage": return self.repeatedLazyMessage
        case "defaultInt32": return self.defaultInt32
        case "defaultInt64": return self.defaultInt64
        case "defaultUint32": return self.defaultUint32
        case "defaultUint64": return self.defaultUint64
        case "defaultSint32": return self.defaultSint32
        case "defaultSint64": return self.defaultSint64
        case "defaultFixed32": return self.defaultFixed32
        case "defaultFixed64": return self.defaultFixed64
        case "defaultSfixed32": return self.defaultSfixed32
        case "defaultSfixed64": return self.defaultSfixed64
        case "defaultFloat": return self.defaultFloat
        case "defaultDouble": return self.defaultDouble
        case "defaultBool": return self.defaultBool
        case "defaultString": return self.defaultString
        case "defaultBytes": return self.defaultBytes
        case "defaultNestedEnum": return self.defaultNestedEnum
        case "defaultForeignEnum": return self.defaultForeignEnum
        case "defaultImportEnum": return self.defaultImportEnum
        case "defaultStringPiece": return self.defaultStringPiece
        case "defaultCord": return self.defaultCord
        case "oneofUint32": return self.oneofUint32
        case "oneofNestedMessage": return self.oneofNestedMessage
        case "oneofString": return self.oneofString
        case "oneofBytes": return self.oneofBytes
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.NestedMessage: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> {
        var mergedArray = Array<ProtobufUnittest.TestAllTypesLite.NestedMessage>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage? {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.NestedMessage {
        return try ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "bb": return self.bb
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.OptionalGroup: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestAllTypesLite.OptionalGroup> {
        var mergedArray = Array<ProtobufUnittest.TestAllTypesLite.OptionalGroup>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup? {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.OptionalGroup {
        return try ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "a": return self.a
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.RepeatedGroup: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup> {
        var mergedArray = Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup? {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllTypesLite.RepeatedGroup {
        return try ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "a": return self.a
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestAllTypesLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "optionalInt32": return self.optionalInt32
            case "optionalInt64": return self.optionalInt64
            case "optionalUint32": return self.optionalUint32
            case "optionalUint64": return self.optionalUint64
            case "optionalSint32": return self.optionalSint32
            case "optionalSint64": return self.optionalSint64
            case "optionalFixed32": return self.optionalFixed32
            case "optionalFixed64": return self.optionalFixed64
            case "optionalSfixed32": return self.optionalSfixed32
            case "optionalSfixed64": return self.optionalSfixed64
            case "optionalFloat": return self.optionalFloat
            case "optionalDouble": return self.optionalDouble
            case "optionalBool": return self.optionalBool
            case "optionalString": return self.optionalString
            case "optionalBytes": return self.optionalBytes
            case "optionalGroup": return self.optionalGroup
            case "optionalNestedMessage": return self.optionalNestedMessage
            case "optionalForeignMessage": return self.optionalForeignMessage
            case "optionalImportMessage": return self.optionalImportMessage
            case "optionalNestedEnum": return self.optionalNestedEnum
            case "optionalForeignEnum": return self.optionalForeignEnum
            case "optionalImportEnum": return self.optionalImportEnum
            case "optionalStringPiece": return self.optionalStringPiece
            case "optionalCord": return self.optionalCord
            case "optionalPublicImportMessage": return self.optionalPublicImportMessage
            case "optionalLazyMessage": return self.optionalLazyMessage
            case "repeatedInt32": return self.repeatedInt32
            case "repeatedInt64": return self.repeatedInt64
            case "repeatedUint32": return self.repeatedUint32
            case "repeatedUint64": return self.repeatedUint64
            case "repeatedSint32": return self.repeatedSint32
            case "repeatedSint64": return self.repeatedSint64
            case "repeatedFixed32": return self.repeatedFixed32
            case "repeatedFixed64": return self.repeatedFixed64
            case "repeatedSfixed32": return self.repeatedSfixed32
            case "repeatedSfixed64": return self.repeatedSfixed64
            case "repeatedFloat": return self.repeatedFloat
            case "repeatedDouble": return self.repeatedDouble
            case "repeatedBool": return self.repeatedBool
            case "repeatedString": return self.repeatedString
            case "repeatedBytes": return self.repeatedBytes
            case "repeatedGroup": return self.repeatedGroup
            case "repeatedNestedMessage": return self.repeatedNestedMessage
            case "repeatedForeignMessage": return self.repeatedForeignMessage
            case "repeatedImportMessage": return self.repeatedImportMessage
            case "repeatedNestedEnum": return self.repeatedNestedEnum
            case "repeatedForeignEnum": return self.repeatedForeignEnum
            case "repeatedImportEnum": return self.repeatedImportEnum
            case "repeatedStringPiece": return self.repeatedStringPiece
            case "repeatedCord": return self.repeatedCord
            case "repeatedLazyMessage": return self.repeatedLazyMessage
            case "defaultInt32": return self.defaultInt32
            case "defaultInt64": return self.defaultInt64
            case "defaultUint32": return self.defaultUint32
            case "defaultUint64": return self.defaultUint64
            case "defaultSint32": return self.defaultSint32
            case "defaultSint64": return self.defaultSint64
            case "defaultFixed32": return self.defaultFixed32
            case "defaultFixed64": return self.defaultFixed64
            case "defaultSfixed32": return self.defaultSfixed32
            case "defaultSfixed64": return self.defaultSfixed64
            case "defaultFloat": return self.defaultFloat
            case "defaultDouble": return self.defaultDouble
            case "defaultBool": return self.defaultBool
            case "defaultString": return self.defaultString
            case "defaultBytes": return self.defaultBytes
            case "defaultNestedEnum": return self.defaultNestedEnum
            case "defaultForeignEnum": return self.defaultForeignEnum
            case "defaultImportEnum": return self.defaultImportEnum
            case "defaultStringPiece": return self.defaultStringPiece
            case "defaultCord": return self.defaultCord
            case "oneofUint32": return self.oneofUint32
            case "oneofNestedMessage": return self.oneofNestedMessage
            case "oneofString": return self.oneofString
            case "oneofBytes": return self.oneofBytes
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "optionalInt32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.optionalInt32 = newSubscriptValue
            case "optionalInt64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.optionalInt64 = newSubscriptValue
            case "optionalUint32":
                guard let newSubscriptValue = newSubscriptValue as? UInt32 else {
                    return
                }
                self.optionalUint32 = newSubscriptValue
            case "optionalUint64":
                guard let newSubscriptValue = newSubscriptValue as? UInt64 else {
                    return
                }
                self.optionalUint64 = newSubscriptValue
            case "optionalSint32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.optionalSint32 = newSubscriptValue
            case "optionalSint64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.optionalSint64 = newSubscriptValue
            case "optionalFixed32":
                guard let newSubscriptValue = newSubscriptValue as? UInt32 else {
                    return
                }
                self.optionalFixed32 = newSubscriptValue
            case "optionalFixed64":
                guard let newSubscriptValue = newSubscriptValue as? UInt64 else {
                    return
                }
                self.optionalFixed64 = newSubscriptValue
            case "optionalSfixed32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.optionalSfixed32 = newSubscriptValue
            case "optionalSfixed64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.optionalSfixed64 = newSubscriptValue
            case "optionalFloat":
                guard let newSubscriptValue = newSubscriptValue as? Float else {
                    return
                }
                self.optionalFloat = newSubscriptValue
            case "optionalDouble":
                guard let newSubscriptValue = newSubscriptValue as? Double else {
                    return
                }
                self.optionalDouble = newSubscriptValue
            case "optionalBool":
                guard let newSubscriptValue = newSubscriptValue as? Bool else {
                    return
                }
                self.optionalBool = newSubscriptValue
            case "optionalString":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.optionalString = newSubscriptValue
            case "optionalBytes":
                guard let newSubscriptValue = newSubscriptValue as? Data else {
                    return
                }
                self.optionalBytes = newSubscriptValue
            case "optionalGroup":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.OptionalGroup else {
                    return
                }
                self.optionalGroup = newSubscriptValue
            case "optionalNestedMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.NestedMessage else {
                    return
                }
                self.optionalNestedMessage = newSubscriptValue
            case "optionalForeignMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.ForeignMessageLite else {
                    return
                }
                self.optionalForeignMessage = newSubscriptValue
            case "optionalImportMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittestImport.ImportMessageLite else {
                    return
                }
                self.optionalImportMessage = newSubscriptValue
            case "optionalNestedEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.NestedEnum else {
                    return
                }
                self.optionalNestedEnum = newSubscriptValue
            case "optionalForeignEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.ForeignEnumLite else {
                    return
                }
                self.optionalForeignEnum = newSubscriptValue
            case "optionalImportEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittestImport.ImportEnumLite else {
                    return
                }
                self.optionalImportEnum = newSubscriptValue
            case "optionalStringPiece":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.optionalStringPiece = newSubscriptValue
            case "optionalCord":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.optionalCord = newSubscriptValue
            case "optionalPublicImportMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittestImport.PublicImportMessageLite else {
                    return
                }
                self.optionalPublicImportMessage = newSubscriptValue
            case "optionalLazyMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.NestedMessage else {
                    return
                }
                self.optionalLazyMessage = newSubscriptValue
            case "repeatedInt32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.repeatedInt32 = newSubscriptValue
            case "repeatedInt64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.repeatedInt64 = newSubscriptValue
            case "repeatedUint32":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt32> else {
                    return
                }
                self.repeatedUint32 = newSubscriptValue
            case "repeatedUint64":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt64> else {
                    return
                }
                self.repeatedUint64 = newSubscriptValue
            case "repeatedSint32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.repeatedSint32 = newSubscriptValue
            case "repeatedSint64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.repeatedSint64 = newSubscriptValue
            case "repeatedFixed32":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt32> else {
                    return
                }
                self.repeatedFixed32 = newSubscriptValue
            case "repeatedFixed64":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt64> else {
                    return
                }
                self.repeatedFixed64 = newSubscriptValue
            case "repeatedSfixed32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.repeatedSfixed32 = newSubscriptValue
            case "repeatedSfixed64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.repeatedSfixed64 = newSubscriptValue
            case "repeatedFloat":
                guard let newSubscriptValue = newSubscriptValue as? Array<Float> else {
                    return
                }
                self.repeatedFloat = newSubscriptValue
            case "repeatedDouble":
                guard let newSubscriptValue = newSubscriptValue as? Array<Double> else {
                    return
                }
                self.repeatedDouble = newSubscriptValue
            case "repeatedBool":
                guard let newSubscriptValue = newSubscriptValue as? Array<Bool> else {
                    return
                }
                self.repeatedBool = newSubscriptValue
            case "repeatedString":
                guard let newSubscriptValue = newSubscriptValue as? Array<String> else {
                    return
                }
                self.repeatedString = newSubscriptValue
            case "repeatedBytes":
                guard let newSubscriptValue = newSubscriptValue as? Array<Data> else {
                    return
                }
                self.repeatedBytes = newSubscriptValue
            case "repeatedGroup":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite.RepeatedGroup> else {
                    return
                }
                self.repeatedGroup = newSubscriptValue
            case "repeatedNestedMessage":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> else {
                    return
                }
                self.repeatedNestedMessage = newSubscriptValue
            case "repeatedForeignMessage":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.ForeignMessageLite> else {
                    return
                }
                self.repeatedForeignMessage = newSubscriptValue
            case "repeatedImportMessage":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittestImport.ImportMessageLite> else {
                    return
                }
                self.repeatedImportMessage = newSubscriptValue
            case "repeatedNestedEnum":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite.NestedEnum> else {
                    return
                }
                self.repeatedNestedEnum = newSubscriptValue
            case "repeatedForeignEnum":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.ForeignEnumLite> else {
                    return
                }
                self.repeatedForeignEnum = newSubscriptValue
            case "repeatedImportEnum":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittestImport.ImportEnumLite> else {
                    return
                }
                self.repeatedImportEnum = newSubscriptValue
            case "repeatedStringPiece":
                guard let newSubscriptValue = newSubscriptValue as? Array<String> else {
                    return
                }
                self.repeatedStringPiece = newSubscriptValue
            case "repeatedCord":
                guard let newSubscriptValue = newSubscriptValue as? Array<String> else {
                    return
                }
                self.repeatedCord = newSubscriptValue
            case "repeatedLazyMessage":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite.NestedMessage> else {
                    return
                }
                self.repeatedLazyMessage = newSubscriptValue
            case "defaultInt32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.defaultInt32 = newSubscriptValue
            case "defaultInt64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.defaultInt64 = newSubscriptValue
            case "defaultUint32":
                guard let newSubscriptValue = newSubscriptValue as? UInt32 else {
                    return
                }
                self.defaultUint32 = newSubscriptValue
            case "defaultUint64":
                guard let newSubscriptValue = newSubscriptValue as? UInt64 else {
                    return
                }
                self.defaultUint64 = newSubscriptValue
            case "defaultSint32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.defaultSint32 = newSubscriptValue
            case "defaultSint64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.defaultSint64 = newSubscriptValue
            case "defaultFixed32":
                guard let newSubscriptValue = newSubscriptValue as? UInt32 else {
                    return
                }
                self.defaultFixed32 = newSubscriptValue
            case "defaultFixed64":
                guard let newSubscriptValue = newSubscriptValue as? UInt64 else {
                    return
                }
                self.defaultFixed64 = newSubscriptValue
            case "defaultSfixed32":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.defaultSfixed32 = newSubscriptValue
            case "defaultSfixed64":
                guard let newSubscriptValue = newSubscriptValue as? Int64 else {
                    return
                }
                self.defaultSfixed64 = newSubscriptValue
            case "defaultFloat":
                guard let newSubscriptValue = newSubscriptValue as? Float else {
                    return
                }
                self.defaultFloat = newSubscriptValue
            case "defaultDouble":
                guard let newSubscriptValue = newSubscriptValue as? Double else {
                    return
                }
                self.defaultDouble = newSubscriptValue
            case "defaultBool":
                guard let newSubscriptValue = newSubscriptValue as? Bool else {
                    return
                }
                self.defaultBool = newSubscriptValue
            case "defaultString":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.defaultString = newSubscriptValue
            case "defaultBytes":
                guard let newSubscriptValue = newSubscriptValue as? Data else {
                    return
                }
                self.defaultBytes = newSubscriptValue
            case "defaultNestedEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.NestedEnum else {
                    return
                }
                self.defaultNestedEnum = newSubscriptValue
            case "defaultForeignEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.ForeignEnumLite else {
                    return
                }
                self.defaultForeignEnum = newSubscriptValue
            case "defaultImportEnum":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittestImport.ImportEnumLite else {
                    return
                }
                self.defaultImportEnum = newSubscriptValue
            case "defaultStringPiece":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.defaultStringPiece = newSubscriptValue
            case "defaultCord":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.defaultCord = newSubscriptValue
            case "oneofUint32":
                guard let newSubscriptValue = newSubscriptValue as? UInt32 else {
                    return
                }
                self.oneofUint32 = newSubscriptValue
            case "oneofNestedMessage":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite.NestedMessage else {
                    return
                }
                self.oneofNestedMessage = newSubscriptValue
            case "oneofString":
                guard let newSubscriptValue = newSubscriptValue as? String else {
                    return
                }
                self.oneofString = newSubscriptValue
            case "oneofBytes":
                guard let newSubscriptValue = newSubscriptValue as? Data else {
                    return
                }
                self.oneofBytes = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.NestedMessage.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestAllTypesLite.NestedMessage
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "bb": return self.bb
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "bb":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.bb = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.OptionalGroup.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestAllTypesLite.OptionalGroup
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "a": return self.a
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "a":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.a = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestAllTypesLite.RepeatedGroup.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestAllTypesLite.RepeatedGroup
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "a": return self.a
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "a":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.a = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.ForeignMessageLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.ForeignMessageLite> {
        var mergedArray = Array<ProtobufUnittest.ForeignMessageLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.ForeignMessageLite? {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.ForeignMessageLite {
        return try ProtobufUnittest.ForeignMessageLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "c": return self.c
        default: return nil
        }
    }
}
extension ProtobufUnittest.ForeignMessageLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.ForeignMessageLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "c": return self.c
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "c":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.c = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestPackedTypesLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestPackedTypesLite> {
        var mergedArray = Array<ProtobufUnittest.TestPackedTypesLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestPackedTypesLite? {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedTypesLite {
        return try ProtobufUnittest.TestPackedTypesLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "packedInt32": return self.packedInt32
        case "packedInt64": return self.packedInt64
        case "packedUint32": return self.packedUint32
        case "packedUint64": return self.packedUint64
        case "packedSint32": return self.packedSint32
        case "packedSint64": return self.packedSint64
        case "packedFixed32": return self.packedFixed32
        case "packedFixed64": return self.packedFixed64
        case "packedSfixed32": return self.packedSfixed32
        case "packedSfixed64": return self.packedSfixed64
        case "packedFloat": return self.packedFloat
        case "packedDouble": return self.packedDouble
        case "packedBool": return self.packedBool
        case "packedEnum": return self.packedEnum
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestPackedTypesLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestPackedTypesLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "packedInt32": return self.packedInt32
            case "packedInt64": return self.packedInt64
            case "packedUint32": return self.packedUint32
            case "packedUint64": return self.packedUint64
            case "packedSint32": return self.packedSint32
            case "packedSint64": return self.packedSint64
            case "packedFixed32": return self.packedFixed32
            case "packedFixed64": return self.packedFixed64
            case "packedSfixed32": return self.packedSfixed32
            case "packedSfixed64": return self.packedSfixed64
            case "packedFloat": return self.packedFloat
            case "packedDouble": return self.packedDouble
            case "packedBool": return self.packedBool
            case "packedEnum": return self.packedEnum
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "packedInt32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.packedInt32 = newSubscriptValue
            case "packedInt64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.packedInt64 = newSubscriptValue
            case "packedUint32":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt32> else {
                    return
                }
                self.packedUint32 = newSubscriptValue
            case "packedUint64":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt64> else {
                    return
                }
                self.packedUint64 = newSubscriptValue
            case "packedSint32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.packedSint32 = newSubscriptValue
            case "packedSint64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.packedSint64 = newSubscriptValue
            case "packedFixed32":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt32> else {
                    return
                }
                self.packedFixed32 = newSubscriptValue
            case "packedFixed64":
                guard let newSubscriptValue = newSubscriptValue as? Array<UInt64> else {
                    return
                }
                self.packedFixed64 = newSubscriptValue
            case "packedSfixed32":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int32> else {
                    return
                }
                self.packedSfixed32 = newSubscriptValue
            case "packedSfixed64":
                guard let newSubscriptValue = newSubscriptValue as? Array<Int64> else {
                    return
                }
                self.packedSfixed64 = newSubscriptValue
            case "packedFloat":
                guard let newSubscriptValue = newSubscriptValue as? Array<Float> else {
                    return
                }
                self.packedFloat = newSubscriptValue
            case "packedDouble":
                guard let newSubscriptValue = newSubscriptValue as? Array<Double> else {
                    return
                }
                self.packedDouble = newSubscriptValue
            case "packedBool":
                guard let newSubscriptValue = newSubscriptValue as? Array<Bool> else {
                    return
                }
                self.packedBool = newSubscriptValue
            case "packedEnum":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.ForeignEnumLite> else {
                    return
                }
                self.packedEnum = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestAllExtensionsLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestAllExtensionsLite> {
        var mergedArray = Array<ProtobufUnittest.TestAllExtensionsLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllExtensionsLite? {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestAllExtensionsLite {
        return try ProtobufUnittest.TestAllExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        return nil
    }
}
extension ProtobufUnittest.TestAllExtensionsLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestAllExtensionsLite
    public subscript(key: String) -> Any? {
        get { return nil }
        set { }
    }
}
extension ProtobufUnittest.OptionalGroupExtensionLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.OptionalGroupExtensionLite> {
        var mergedArray = Array<ProtobufUnittest.OptionalGroupExtensionLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.OptionalGroupExtensionLite? {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.OptionalGroupExtensionLite {
        return try ProtobufUnittest.OptionalGroupExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "a": return self.a
        default: return nil
        }
    }
}
extension ProtobufUnittest.OptionalGroupExtensionLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.OptionalGroupExtensionLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "a": return self.a
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "a":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.a = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.RepeatedGroupExtensionLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.RepeatedGroupExtensionLite> {
        var mergedArray = Array<ProtobufUnittest.RepeatedGroupExtensionLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.RepeatedGroupExtensionLite? {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.RepeatedGroupExtensionLite {
        return try ProtobufUnittest.RepeatedGroupExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "a": return self.a
        default: return nil
        }
    }
}
extension ProtobufUnittest.RepeatedGroupExtensionLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.RepeatedGroupExtensionLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "a": return self.a
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "a":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.a = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestPackedExtensionsLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestPackedExtensionsLite> {
        var mergedArray = Array<ProtobufUnittest.TestPackedExtensionsLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestPackedExtensionsLite? {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestPackedExtensionsLite {
        return try ProtobufUnittest.TestPackedExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        return nil
    }
}
extension ProtobufUnittest.TestPackedExtensionsLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestPackedExtensionsLite
    public subscript(key: String) -> Any? {
        get { return nil }
        set { }
    }
}
extension ProtobufUnittest.TestNestedExtensionLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestNestedExtensionLite> {
        var mergedArray = Array<ProtobufUnittest.TestNestedExtensionLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestNestedExtensionLite? {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestNestedExtensionLite {
        return try ProtobufUnittest.TestNestedExtensionLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        return nil
    }
}
extension ProtobufUnittest.TestNestedExtensionLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestNestedExtensionLite
    public subscript(key: String) -> Any? {
        get { return nil }
        set { }
    }
}
extension ProtobufUnittest.TestDeprecatedLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestDeprecatedLite> {
        var mergedArray = Array<ProtobufUnittest.TestDeprecatedLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestDeprecatedLite? {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestDeprecatedLite {
        return try ProtobufUnittest.TestDeprecatedLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "deprecatedField": return self.deprecatedField
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestDeprecatedLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestDeprecatedLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "deprecatedField": return self.deprecatedField
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "deprecatedField":
                guard let newSubscriptValue = newSubscriptValue as? Int32 else {
                    return
                }
                self.deprecatedField = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite? {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite {
        return try ProtobufUnittest.TestParsingMergeLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "requiredAllTypes": return self.requiredAllTypes
        case "optionalAllTypes": return self.optionalAllTypes
        case "repeatedAllTypes": return self.repeatedAllTypes
        case "optionalGroup": return self.optionalGroup
        case "repeatedGroup": return self.repeatedGroup
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator? {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "field1": return self.field1
        case "field2": return self.field2
        case "field3": return self.field3
        case "group1": return self.group1
        case "group2": return self.group2
        case "ext1": return self.ext1
        case "ext2": return self.ext2
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1? {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "field1": return self.field1
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2? {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2 {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "field1": return self.field1
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.OptionalGroup: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite.OptionalGroup> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite.OptionalGroup>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup? {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.OptionalGroup {
        return try ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "optionalGroupAllTypes": return self.optionalGroupAllTypes
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedGroup: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup> {
        var mergedArray = Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup? {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestParsingMergeLite.RepeatedGroup {
        return try ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        switch key {
        case "repeatedGroupAllTypes": return self.repeatedGroupAllTypes
        default: return nil
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "requiredAllTypes": return self.requiredAllTypes
            case "optionalAllTypes": return self.optionalAllTypes
            case "repeatedAllTypes": return self.repeatedAllTypes
            case "optionalGroup": return self.optionalGroup
            case "repeatedGroup": return self.repeatedGroup
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "requiredAllTypes":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.requiredAllTypes = newSubscriptValue
            case "optionalAllTypes":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.optionalAllTypes = newSubscriptValue
            case "repeatedAllTypes":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.repeatedAllTypes = newSubscriptValue
            case "optionalGroup":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestParsingMergeLite.OptionalGroup else {
                    return
                }
                self.optionalGroup = newSubscriptValue
            case "repeatedGroup":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestParsingMergeLite.RepeatedGroup> else {
                    return
                }
                self.repeatedGroup = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "field1": return self.field1
            case "field2": return self.field2
            case "field3": return self.field3
            case "group1": return self.group1
            case "group2": return self.group2
            case "ext1": return self.ext1
            case "ext2": return self.ext2
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "field1":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.field1 = newSubscriptValue
            case "field2":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.field2 = newSubscriptValue
            case "field3":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.field3 = newSubscriptValue
            case "group1":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1> else {
                    return
                }
                self.group1 = newSubscriptValue
            case "group2":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2> else {
                    return
                }
                self.group2 = newSubscriptValue
            case "ext1":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.ext1 = newSubscriptValue
            case "ext2":
                guard let newSubscriptValue = newSubscriptValue as? Array<ProtobufUnittest.TestAllTypesLite> else {
                    return
                }
                self.ext2 = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group1
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "field1": return self.field1
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "field1":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.field1 = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite.RepeatedFieldsGenerator.Group2
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "field1": return self.field1
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "field1":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.field1 = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.OptionalGroup.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite.OptionalGroup
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "optionalGroupAllTypes": return self.optionalGroupAllTypes
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "optionalGroupAllTypes":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.optionalGroupAllTypes = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestParsingMergeLite.RepeatedGroup.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestParsingMergeLite.RepeatedGroup
    public subscript(key: String) -> Any? {
        get { 
            switch key {
            case "repeatedGroupAllTypes": return self.repeatedGroupAllTypes
            default: return nil
            }
        }
        set (newSubscriptValue) { 
            switch key {
            case "repeatedGroupAllTypes":
                guard let newSubscriptValue = newSubscriptValue as? ProtobufUnittest.TestAllTypesLite else {
                    return
                }
                self.repeatedGroupAllTypes = newSubscriptValue
            default: return
            }
        }
    }
}
extension ProtobufUnittest.TestEmptyMessageLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestEmptyMessageLite> {
        var mergedArray = Array<ProtobufUnittest.TestEmptyMessageLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestEmptyMessageLite? {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageLite {
        return try ProtobufUnittest.TestEmptyMessageLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        return nil
    }
}
extension ProtobufUnittest.TestEmptyMessageLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestEmptyMessageLite
    public subscript(key: String) -> Any? {
        get { return nil }
        set { }
    }
}
extension ProtobufUnittest.TestEmptyMessageWithExtensionsLite: GeneratedMessageProtocol {
    public class func parseArrayDelimitedFrom(inputStream: InputStream) throws -> Array<ProtobufUnittest.TestEmptyMessageWithExtensionsLite> {
        var mergedArray = Array<ProtobufUnittest.TestEmptyMessageWithExtensionsLite>()
        while let value = try parseDelimitedFrom(inputStream: inputStream) {
          mergedArray.append(value)
        }
        return mergedArray
    }
    public class func parseDelimitedFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite? {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeDelimitedFrom(inputStream: inputStream)?.build()
    }
    public class func parseFrom(data: Data) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:ProtobufUnittest.UnittestLiteRoot.default.extensionRegistry).build()
    }
    public class func parseFrom(data: Data, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(data: data, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(inputStream: InputStream) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(inputStream: inputStream).build()
    }
    public class func parseFrom(inputStream: InputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(inputStream: inputStream, extensionRegistry:extensionRegistry).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream).build()
    }
    public class func parseFrom(codedInputStream: CodedInputStream, extensionRegistry:ExtensionRegistry) throws -> ProtobufUnittest.TestEmptyMessageWithExtensionsLite {
        return try ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder().mergeFrom(codedInputStream: codedInputStream, extensionRegistry:extensionRegistry).build()
    }
    public subscript(key: String) -> Any? {
        return nil
    }
}
extension ProtobufUnittest.TestEmptyMessageWithExtensionsLite.Builder: GeneratedMessageBuilderProtocol {
    public typealias GeneratedMessageType = ProtobufUnittest.TestEmptyMessageWithExtensionsLite
    public subscript(key: String) -> Any? {
        get { return nil }
        set { }
    }
}

// @@protoc_insertion_point(global_scope)
