diff --git a/README b/README
new file mode 100644
--- /dev/null
+++ b/README
@@ -0,0 +1,5 @@
+To recreate the src-auto-generated files do this:
+
+mv src-auto-generated/ old-src-auto-generated/
+
+/usr/local/bin/hprotoc --unknown_fields --as descriptor.proto=Text --haskell_out=src-auto-generated descriptor.proto
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,2 @@
 import Distribution.Simple
-main = defaultMainWithHooks defaultUserHooks
+main = defaultMain
diff --git a/Text/DescriptorProtos.hs b/Text/DescriptorProtos.hs
deleted file mode 100644
--- a/Text/DescriptorProtos.hs
+++ /dev/null
@@ -1,18 +0,0 @@
-module Text.DescriptorProtos (protoInfo, fileDescriptorProto) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import Text.DescriptorProtos.FileDescriptorProto (FileDescriptorProto)
-import Text.ProtocolBuffers.Reflections (ProtoInfo)
-import qualified Text.ProtocolBuffers.WireMessage as P' (wireGet,getFromBS)
- 
-protoInfo :: ProtoInfo
-protoInfo
- = P'.read
-    "ProtoInfo {protoMod = ProtoName {protobufName = FIName \".google.protobuf\", haskellPrefix = [MName \"Text\"], parentModule = [], baseName = MName \"DescriptorProtos\"}, protoFilePath = [\"Text\",\"DescriptorProtos.hs\"], protoSource = \"descriptor.proto\", extensionKeys = fromList [], messages = [DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorSet\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorSet\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorSet.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorSet.file\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorSet\"], baseName' = FName \"file\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"package\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.dependency\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"dependency\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.message_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"message_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.service\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"service\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.field\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"field\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.nested_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"nested_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension_range\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension_range\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto\",\"ExtensionRange.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.start\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"start\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.end\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"end\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.label\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"label\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type'\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type_name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type_name\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.extendee\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"extendee\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.default_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"default_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"value\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.method\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"method\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.input_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"input_type\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.output_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"output_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_package\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_outer_classname\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_outer_classname\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_multiple_files\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_multiple_files\"}, fieldNumber = FieldId {getFieldId = 10}, wireTag = WireTag {getWireTag = 80}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.optimize_for\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"optimize_for\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 72}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}), hsRawDefault = Just (Chunk \"SPEED\" Empty), hsDefault = Just (HsDef'Enum \"SPEED\")},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MessageOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.message_set_wire_format\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"message_set_wire_format\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.ctype\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"ctype\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.packed\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"packed\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.deprecated\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"deprecated\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.experimental_map_key\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"experimental_map_key\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 74}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.identifier_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"identifier_value\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.positive_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"positive_int_value\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 4}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.negative_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"negative_int_value\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 3}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.double_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"double_value\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 49}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 1}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.string_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"string_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 12}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption\",\"NamePart.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.name_part\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"name_part\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.is_extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"is_extension\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}], enums = [EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto\",\"Type.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"TYPE_DOUBLE\"),(EnumCode {getEnumCode = 2},\"TYPE_FLOAT\"),(EnumCode {getEnumCode = 3},\"TYPE_INT64\"),(EnumCode {getEnumCode = 4},\"TYPE_UINT64\"),(EnumCode {getEnumCode = 5},\"TYPE_INT32\"),(EnumCode {getEnumCode = 6},\"TYPE_FIXED64\"),(EnumCode {getEnumCode = 7},\"TYPE_FIXED32\"),(EnumCode {getEnumCode = 8},\"TYPE_BOOL\"),(EnumCode {getEnumCode = 9},\"TYPE_STRING\"),(EnumCode {getEnumCode = 10},\"TYPE_GROUP\"),(EnumCode {getEnumCode = 11},\"TYPE_MESSAGE\"),(EnumCode {getEnumCode = 12},\"TYPE_BYTES\"),(EnumCode {getEnumCode = 13},\"TYPE_UINT32\"),(EnumCode {getEnumCode = 14},\"TYPE_ENUM\"),(EnumCode {getEnumCode = 15},\"TYPE_SFIXED32\"),(EnumCode {getEnumCode = 16},\"TYPE_SFIXED64\"),(EnumCode {getEnumCode = 17},\"TYPE_SINT32\"),(EnumCode {getEnumCode = 18},\"TYPE_SINT64\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto\",\"Label.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"LABEL_OPTIONAL\"),(EnumCode {getEnumCode = 2},\"LABEL_REQUIRED\"),(EnumCode {getEnumCode = 3},\"LABEL_REPEATED\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions\",\"OptimizeMode.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"SPEED\"),(EnumCode {getEnumCode = 2},\"CODE_SIZE\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions\",\"CType.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"CORD\"),(EnumCode {getEnumCode = 2},\"STRING_PIECE\")]}], knownKeyMap = fromList []}"
- 
-fileDescriptorProto :: FileDescriptorProto
-fileDescriptorProto
- = P'.getFromBS (P'.wireGet 11)
-    (P'.pack
-      "\144\ESC\n\DLEdescriptor.proto\DC2\SIgoogle.protobuf\"G\n\DC1FileDescriptorSet\DC22\n\EOTfile\CAN\SOH \ETX(\v2$.google.protobuf.FileDescriptorProto\"\220\STX\n\DC3FileDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SI\n\apackage\CAN\STX \SOH(\t\DC2\DC2\n\ndependency\CAN\ETX \ETX(\t\DC26\n\fmessage_type\CAN\EOT \ETX(\v2 .google.protobuf.DescriptorProto\DC27\n\tenum_type\CAN\ENQ \ETX(\v2$.google.protobuf.EnumDescriptorProto\DC28\n\aservice\CAN\ACK \ETX(\v2'.google.protobuf.ServiceDescriptorProto\DC28\n\textension\CAN\a \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC2-\n\aoptions\CAN\b \SOH(\v2\FS.google.protobuf.FileOptions\"\169\ETX\n\SIDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC24\n\ENQfield\CAN\STX \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC28\n\textension\CAN\ACK \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC25\n\vnested_type\CAN\ETX \ETX(\v2 .google.protobuf.DescriptorProto\DC27\n\tenum_type\CAN\EOT \ETX(\v2$.google.protobuf.EnumDescriptorProto\DC2H\n\SIextension_range\CAN\ENQ \ETX(\v2/.google.protobuf.DescriptorProto.ExtensionRange\DC20\n\aoptions\CAN\a \SOH(\v2\US.google.protobuf.MessageOptions\SUB,\n\SOExtensionRange\DC2\r\n\ENQstart\CAN\SOH \SOH(\ENQ\DC2\v\n\ETXend\CAN\STX \SOH(\ENQ\"\148\ENQ\n\DC4FieldDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SO\n\ACKnumber\CAN\ETX \SOH(\ENQ\DC2:\n\ENQlabel\CAN\EOT \SOH(\SO2+.google.protobuf.FieldDescriptorProto.Label\DC28\n\EOTtype\CAN\ENQ \SOH(\SO2*.google.protobuf.FieldDescriptorProto.Type\DC2\DC1\n\ttype_name\CAN\ACK \SOH(\t\DC2\DLE\n\bextendee\CAN\STX \SOH(\t\DC2\NAK\n\rdefault_value\CAN\a \SOH(\t\DC2.\n\aoptions\CAN\b \SOH(\v2\GS.google.protobuf.FieldOptions\"\182\STX\n\EOTType\DC2\SI\n\vTYPE_DOUBLE\DLE\SOH\DC2\SO\n\nTYPE_FLOAT\DLE\STX\DC2\SO\n\nTYPE_INT64\DLE\ETX\DC2\SI\n\vTYPE_UINT64\DLE\EOT\DC2\SO\n\nTYPE_INT32\DLE\ENQ\DC2\DLE\n\fTYPE_FIXED64\DLE\ACK\DC2\DLE\n\fTYPE_FIXED32\DLE\a\DC2\r\n\tTYPE_BOOL\DLE\b\DC2\SI\n\vTYPE_STRING\DLE\t\DC2\SO\n\nTYPE_GROUP\DLE\n\DC2\DLE\n\fTYPE_MESSAGE\DLE\v\DC2\SO\n\nTYPE_BYTES\DLE\f\DC2\SI\n\vTYPE_UINT32\DLE\r\DC2\r\n\tTYPE_ENUM\DLE\SO\DC2\DC1\n\rTYPE_SFIXED32\DLE\SI\DC2\DC1\n\rTYPE_SFIXED64\DLE\DLE\DC2\SI\n\vTYPE_SINT32\DLE\DC1\DC2\SI\n\vTYPE_SINT64\DLE\DC2\"C\n\ENQLabel\DC2\DC2\n\SOLABEL_OPTIONAL\DLE\SOH\DC2\DC2\n\SOLABEL_REQUIRED\DLE\STX\DC2\DC2\n\SOLABEL_REPEATED\DLE\ETX\"\140\SOH\n\DC3EnumDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC28\n\ENQvalue\CAN\STX \ETX(\v2).google.protobuf.EnumValueDescriptorProto\DC2-\n\aoptions\CAN\ETX \SOH(\v2\FS.google.protobuf.EnumOptions\"l\n\CANEnumValueDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SO\n\ACKnumber\CAN\STX \SOH(\ENQ\DC22\n\aoptions\CAN\ETX \SOH(\v2!.google.protobuf.EnumValueOptions\"\144\SOH\n\SYNServiceDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC26\n\ACKmethod\CAN\STX \ETX(\v2&.google.protobuf.MethodDescriptorProto\DC20\n\aoptions\CAN\ETX \SOH(\v2\US.google.protobuf.ServiceOptions\"\DEL\n\NAKMethodDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\DC2\n\ninput_type\CAN\STX \SOH(\t\DC2\DC3\n\voutput_type\CAN\ETX \SOH(\t\DC2/\n\aoptions\CAN\EOT \SOH(\v2\RS.google.protobuf.MethodOptions\"\167\STX\n\vFileOptions\DC2\DC4\n\fjava_package\CAN\SOH \SOH(\t\DC2\FS\n\DC4java_outer_classname\CAN\b \SOH(\t\DC2\"\n\DC3java_multiple_files\CAN\n \SOH(\b:\ENQfalse\DC2F\n\foptimize_for\CAN\t \SOH(\SO2).google.protobuf.FileOptions.OptimizeMode:\ENQSPEED\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption\"(\n\fOptimizeMode\DC2\t\n\ENQSPEED\DLE\SOH\DC2\r\n\tCODE_SIZE\DLE\STX*\t\b\232\a\DLE\128\128\128\128\STX\"\136\SOH\n\SOMessageOptions\DC2&\n\ETBmessage_set_wire_format\CAN\SOH \SOH(\b:\ENQfalse\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"\128\STX\n\fFieldOptions\DC22\n\ENQctype\CAN\SOH \SOH(\SO2#.google.protobuf.FieldOptions.CType\DC2\SO\n\ACKpacked\CAN\STX \SOH(\b\DC2\EM\n\ndeprecated\CAN\ETX \SOH(\b:\ENQfalse\DC2\FS\n\DC4experimental_map_key\CAN\t \SOH(\t\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption\"#\n\ENQCType\DC2\b\n\EOTCORD\DLE\SOH\DC2\DLE\n\fSTRING_PIECE\DLE\STX*\t\b\232\a\DLE\128\128\128\128\STX\"]\n\vEnumOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"b\n\DLEEnumValueOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"`\n\SOServiceOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"_\n\rMethodOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"\133\STX\n\DC3UninterpretedOption\DC2;\n\EOTname\CAN\STX \ETX(\v2-.google.protobuf.UninterpretedOption.NamePart\DC2\CAN\n\DLEidentifier_value\CAN\ETX \SOH(\t\DC2\SUB\n\DC2positive_int_value\CAN\EOT \SOH(\EOT\DC2\SUB\n\DC2negative_int_value\CAN\ENQ \SOH(\ETX\DC2\DC4\n\fdouble_value\CAN\ACK \SOH(\SOH\DC2\DC4\n\fstring_value\CAN\a \SOH(\f\SUB3\n\bNamePart\DC2\DC1\n\tname_part\CAN\SOH \STX(\t\DC2\DC4\n\fis_extension\CAN\STX \STX(\bB)\n\DC3com.google.protobufB\DLEDescriptorProtosH\SOH")
diff --git a/Text/DescriptorProtos/DescriptorProto.hs b/Text/DescriptorProtos/DescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/DescriptorProto.hs
+++ /dev/null
@@ -1,87 +0,0 @@
-module Text.DescriptorProtos.DescriptorProto (DescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as DescriptorProtos.DescriptorProto (ExtensionRange)
-import qualified Text.DescriptorProtos.EnumDescriptorProto as DescriptorProtos (EnumDescriptorProto)
-import qualified Text.DescriptorProtos.FieldDescriptorProto as DescriptorProtos (FieldDescriptorProto)
-import qualified Text.DescriptorProtos.MessageOptions as DescriptorProtos (MessageOptions)
- 
-data DescriptorProto = DescriptorProto{name :: P'.Maybe P'.Utf8, field :: P'.Seq DescriptorProtos.FieldDescriptorProto,
-                                       extension :: P'.Seq DescriptorProtos.FieldDescriptorProto,
-                                       nested_type :: P'.Seq DescriptorProto,
-                                       enum_type :: P'.Seq DescriptorProtos.EnumDescriptorProto,
-                                       extension_range :: P'.Seq DescriptorProtos.DescriptorProto.ExtensionRange,
-                                       options :: P'.Maybe DescriptorProtos.MessageOptions}
-                     deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable DescriptorProto where
-  mergeEmpty = DescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7) (DescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7)
-   = DescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
-      (P'.mergeAppend x'7 y'7)
- 
-instance P'.Default DescriptorProto where
-  defaultValue
-   = DescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire DescriptorProto where
-  wireSize ft' self'@(DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeRep 1 11 x'3 + P'.wireSizeRep 1 11 x'4 +
-             P'.wireSizeRep 1 11 x'5
-             + P'.wireSizeRep 1 11 x'6
-             + P'.wireSizeOpt 1 11 x'7)
-  wirePut ft' self'@(DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutRep 18 11 x'2
-             P'.wirePutRep 26 11 x'4
-             P'.wirePutRep 34 11 x'5
-             P'.wirePutRep 42 11 x'6
-             P'.wirePutRep 50 11 x'3
-             P'.wirePutOpt 58 11 x'7
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{field = P'.append (field old'Self) new'Field}) (P'.wireGet 11)
-             50 -> P'.fmap (\ new'Field -> old'Self{extension = P'.append (extension old'Self) new'Field}) (P'.wireGet 11)
-             26 -> P'.fmap (\ new'Field -> old'Self{nested_type = P'.append (nested_type old'Self) new'Field}) (P'.wireGet 11)
-             34 -> P'.fmap (\ new'Field -> old'Self{enum_type = P'.append (enum_type old'Self) new'Field}) (P'.wireGet 11)
-             42 -> P'.fmap (\ new'Field -> old'Self{extension_range = P'.append (extension_range old'Self) new'Field})
-                    (P'.wireGet 11)
-             58 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> DescriptorProto) DescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB DescriptorProto
- 
-instance P'.ReflectDescriptor DescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34, 42, 50, 58])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.field\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"field\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.nested_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"nested_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension_range\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension_range\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs b/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-module Text.DescriptorProtos.DescriptorProto.ExtensionRange (ExtensionRange(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data ExtensionRange = ExtensionRange{start :: P'.Maybe P'.Int32, end :: P'.Maybe P'.Int32}
-                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable ExtensionRange where
-  mergeEmpty = ExtensionRange P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (ExtensionRange x'1 x'2) (ExtensionRange y'1 y'2) = ExtensionRange (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default ExtensionRange where
-  defaultValue = ExtensionRange P'.defaultValue P'.defaultValue
- 
-instance P'.Wire ExtensionRange where
-  wireSize ft' self'@(ExtensionRange x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 5 x'1 + P'.wireSizeOpt 1 5 x'2)
-  wirePut ft' self'@(ExtensionRange x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 8 5 x'1
-             P'.wirePutOpt 16 5 x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             8 -> P'.fmap (\ new'Field -> old'Self{start = P'.Just new'Field}) (P'.wireGet 5)
-             16 -> P'.fmap (\ new'Field -> old'Self{end = P'.Just new'Field}) (P'.wireGet 5)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> ExtensionRange) ExtensionRange where
-  getVal m' f' = f' m'
- 
-instance P'.GPB ExtensionRange
- 
-instance P'.ReflectDescriptor ExtensionRange where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 16])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto\",\"ExtensionRange.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.start\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"start\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.end\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"end\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/EnumDescriptorProto.hs b/Text/DescriptorProtos/EnumDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/EnumDescriptorProto.hs
+++ /dev/null
@@ -1,64 +0,0 @@
-module Text.DescriptorProtos.EnumDescriptorProto (EnumDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.EnumOptions as DescriptorProtos (EnumOptions)
-import qualified Text.DescriptorProtos.EnumValueDescriptorProto as DescriptorProtos (EnumValueDescriptorProto)
- 
-data EnumDescriptorProto = EnumDescriptorProto{name :: P'.Maybe P'.Utf8, value :: P'.Seq DescriptorProtos.EnumValueDescriptorProto,
-                                               options :: P'.Maybe DescriptorProtos.EnumOptions}
-                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable EnumDescriptorProto where
-  mergeEmpty = EnumDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (EnumDescriptorProto x'1 x'2 x'3) (EnumDescriptorProto y'1 y'2 y'3)
-   = EnumDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
- 
-instance P'.Default EnumDescriptorProto where
-  defaultValue = EnumDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire EnumDescriptorProto where
-  wireSize ft' self'@(EnumDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeOpt 1 11 x'3)
-  wirePut ft' self'@(EnumDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutRep 18 11 x'2
-             P'.wirePutOpt 26 11 x'3
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{value = P'.append (value old'Self) new'Field}) (P'.wireGet 11)
-             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> EnumDescriptorProto) EnumDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB EnumDescriptorProto
- 
-instance P'.ReflectDescriptor EnumDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"value\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/EnumOptions.hs b/Text/DescriptorProtos/EnumOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/EnumOptions.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Text.DescriptorProtos.EnumOptions (EnumOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data EnumOptions = EnumOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                 deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage EnumOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable EnumOptions where
-  mergeEmpty = EnumOptions P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (EnumOptions x'1 x'2) (EnumOptions y'1 y'2) = EnumOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default EnumOptions where
-  defaultValue = EnumOptions P'.defaultValue P'.defaultValue
- 
-instance P'.Wire EnumOptions where
-  wireSize ft' self'@(EnumOptions x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2)
-  wirePut ft' self'@(EnumOptions x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 7994 11 x'1
-             P'.wirePutExtField x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> EnumOptions) EnumOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB EnumOptions
- 
-instance P'.ReflectDescriptor EnumOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/EnumValueDescriptorProto.hs b/Text/DescriptorProtos/EnumValueDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/EnumValueDescriptorProto.hs
+++ /dev/null
@@ -1,63 +0,0 @@
-module Text.DescriptorProtos.EnumValueDescriptorProto (EnumValueDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.EnumValueOptions as DescriptorProtos (EnumValueOptions)
- 
-data EnumValueDescriptorProto = EnumValueDescriptorProto{name :: P'.Maybe P'.Utf8, number :: P'.Maybe P'.Int32,
-                                                         options :: P'.Maybe DescriptorProtos.EnumValueOptions}
-                              deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable EnumValueDescriptorProto where
-  mergeEmpty = EnumValueDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (EnumValueDescriptorProto x'1 x'2 x'3) (EnumValueDescriptorProto y'1 y'2 y'3)
-   = EnumValueDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
- 
-instance P'.Default EnumValueDescriptorProto where
-  defaultValue = EnumValueDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire EnumValueDescriptorProto where
-  wireSize ft' self'@(EnumValueDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 5 x'2 + P'.wireSizeOpt 1 11 x'3)
-  wirePut ft' self'@(EnumValueDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutOpt 16 5 x'2
-             P'.wirePutOpt 26 11 x'3
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             16 -> P'.fmap (\ new'Field -> old'Self{number = P'.Just new'Field}) (P'.wireGet 5)
-             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> EnumValueDescriptorProto) EnumValueDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB EnumValueDescriptorProto
- 
-instance P'.ReflectDescriptor EnumValueDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 16, 26])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/EnumValueOptions.hs b/Text/DescriptorProtos/EnumValueOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/EnumValueOptions.hs
+++ /dev/null
@@ -1,67 +0,0 @@
-module Text.DescriptorProtos.EnumValueOptions (EnumValueOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data EnumValueOptions = EnumValueOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption,
-                                         ext'field :: P'.ExtField}
-                      deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage EnumValueOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable EnumValueOptions where
-  mergeEmpty = EnumValueOptions P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (EnumValueOptions x'1 x'2) (EnumValueOptions y'1 y'2)
-   = EnumValueOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default EnumValueOptions where
-  defaultValue = EnumValueOptions P'.defaultValue P'.defaultValue
- 
-instance P'.Wire EnumValueOptions where
-  wireSize ft' self'@(EnumValueOptions x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2)
-  wirePut ft' self'@(EnumValueOptions x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 7994 11 x'1
-             P'.wirePutExtField x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> EnumValueOptions) EnumValueOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB EnumValueOptions
- 
-instance P'.ReflectDescriptor EnumValueOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FieldDescriptorProto.hs b/Text/DescriptorProtos/FieldDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FieldDescriptorProto.hs
+++ /dev/null
@@ -1,93 +0,0 @@
-module Text.DescriptorProtos.FieldDescriptorProto (FieldDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.FieldDescriptorProto.Label as DescriptorProtos.FieldDescriptorProto (Label)
-import qualified Text.DescriptorProtos.FieldDescriptorProto.Type as DescriptorProtos.FieldDescriptorProto (Type)
-import qualified Text.DescriptorProtos.FieldOptions as DescriptorProtos (FieldOptions)
- 
-data FieldDescriptorProto = FieldDescriptorProto{name :: P'.Maybe P'.Utf8, number :: P'.Maybe P'.Int32,
-                                                 label :: P'.Maybe DescriptorProtos.FieldDescriptorProto.Label,
-                                                 type' :: P'.Maybe DescriptorProtos.FieldDescriptorProto.Type,
-                                                 type_name :: P'.Maybe P'.Utf8, extendee :: P'.Maybe P'.Utf8,
-                                                 default_value :: P'.Maybe P'.Utf8,
-                                                 options :: P'.Maybe DescriptorProtos.FieldOptions}
-                          deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable FieldDescriptorProto where
-  mergeEmpty
-   = FieldDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-      P'.mergeEmpty
-  mergeAppend (FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8) (FieldDescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7 y'8)
-   = FieldDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
-      (P'.mergeAppend x'7 y'7)
-      (P'.mergeAppend x'8 y'8)
- 
-instance P'.Default FieldDescriptorProto where
-  defaultValue
-   = FieldDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
-      P'.defaultValue
-      P'.defaultValue
- 
-instance P'.Wire FieldDescriptorProto where
-  wireSize ft' self'@(FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 5 x'2 + P'.wireSizeOpt 1 14 x'3 + P'.wireSizeOpt 1 14 x'4 +
-             P'.wireSizeOpt 1 9 x'5
-             + P'.wireSizeOpt 1 9 x'6
-             + P'.wireSizeOpt 1 9 x'7
-             + P'.wireSizeOpt 1 11 x'8)
-  wirePut ft' self'@(FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutOpt 18 9 x'6
-             P'.wirePutOpt 24 5 x'2
-             P'.wirePutOpt 32 14 x'3
-             P'.wirePutOpt 40 14 x'4
-             P'.wirePutOpt 50 9 x'5
-             P'.wirePutOpt 58 9 x'7
-             P'.wirePutOpt 66 11 x'8
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             24 -> P'.fmap (\ new'Field -> old'Self{number = P'.Just new'Field}) (P'.wireGet 5)
-             32 -> P'.fmap (\ new'Field -> old'Self{label = P'.Just new'Field}) (P'.wireGet 14)
-             40 -> P'.fmap (\ new'Field -> old'Self{type' = P'.Just new'Field}) (P'.wireGet 14)
-             50 -> P'.fmap (\ new'Field -> old'Self{type_name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{extendee = P'.Just new'Field}) (P'.wireGet 9)
-             58 -> P'.fmap (\ new'Field -> old'Self{default_value = P'.Just new'Field}) (P'.wireGet 9)
-             66 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> FieldDescriptorProto) FieldDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB FieldDescriptorProto
- 
-instance P'.ReflectDescriptor FieldDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 24, 32, 40, 50, 58, 66])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.label\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"label\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type'\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type_name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type_name\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.extendee\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"extendee\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.default_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"default_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FieldDescriptorProto/Label.hs b/Text/DescriptorProtos/FieldDescriptorProto/Label.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FieldDescriptorProto/Label.hs
+++ /dev/null
@@ -1,61 +0,0 @@
-module Text.DescriptorProtos.FieldDescriptorProto.Label (Label(..)) where
-import Prelude ((+), (.))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data Label = LABEL_OPTIONAL
-           | LABEL_REQUIRED
-           | LABEL_REPEATED
-           deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable Label
- 
-instance P'.Bounded Label where
-  minBound = LABEL_OPTIONAL
-  maxBound = LABEL_REPEATED
- 
-instance P'.Default Label where
-  defaultValue = LABEL_OPTIONAL
- 
-toMaybe'Enum :: P'.Int -> P'.Maybe Label
-toMaybe'Enum 1 = P'.Just LABEL_OPTIONAL
-toMaybe'Enum 2 = P'.Just LABEL_REQUIRED
-toMaybe'Enum 3 = P'.Just LABEL_REPEATED
-toMaybe'Enum _ = P'.Nothing
- 
-instance P'.Enum Label where
-  fromEnum (LABEL_OPTIONAL) = 1
-  fromEnum (LABEL_REQUIRED) = 2
-  fromEnum (LABEL_REPEATED) = 3
-  toEnum
-   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldDescriptorProto.Label") .
-      toMaybe'Enum
-  succ (LABEL_OPTIONAL) = LABEL_REQUIRED
-  succ (LABEL_REQUIRED) = LABEL_REPEATED
-  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldDescriptorProto.Label"
-  pred (LABEL_REQUIRED) = LABEL_OPTIONAL
-  pred (LABEL_REPEATED) = LABEL_REQUIRED
-  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldDescriptorProto.Label"
- 
-instance P'.Wire Label where
-  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
-  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
-  wireGet 14 = P'.wireGetEnum toMaybe'Enum
-  wireGet ft' = P'.wireGetErr ft'
-  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
-  wireGetPacked ft' = P'.wireGetErr ft'
- 
-instance P'.GPB Label
- 
-instance P'.MessageAPI msg' (msg' -> Label) Label where
-  getVal m' f' = f' m'
- 
-instance P'.ReflectEnum Label where
-  reflectEnum
-   = [(1, "LABEL_OPTIONAL", LABEL_OPTIONAL), (2, "LABEL_REQUIRED", LABEL_REQUIRED), (3, "LABEL_REPEATED", LABEL_REPEATED)]
-  reflectEnumInfo _
-   = P'.EnumInfo
-      (P'.makePNF (P'.pack ".google.protobuf.FieldDescriptorProto.Label") ["Text"] ["DescriptorProtos", "FieldDescriptorProto"]
-        "Label")
-      ["Text", "DescriptorProtos", "FieldDescriptorProto", "Label.hs"]
-      [(1, "LABEL_OPTIONAL"), (2, "LABEL_REQUIRED"), (3, "LABEL_REPEATED")]
diff --git a/Text/DescriptorProtos/FieldDescriptorProto/Type.hs b/Text/DescriptorProtos/FieldDescriptorProto/Type.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FieldDescriptorProto/Type.hs
+++ /dev/null
@@ -1,144 +0,0 @@
-module Text.DescriptorProtos.FieldDescriptorProto.Type (Type(..)) where
-import Prelude ((+), (.))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data Type = TYPE_DOUBLE
-          | TYPE_FLOAT
-          | TYPE_INT64
-          | TYPE_UINT64
-          | TYPE_INT32
-          | TYPE_FIXED64
-          | TYPE_FIXED32
-          | TYPE_BOOL
-          | TYPE_STRING
-          | TYPE_GROUP
-          | TYPE_MESSAGE
-          | TYPE_BYTES
-          | TYPE_UINT32
-          | TYPE_ENUM
-          | TYPE_SFIXED32
-          | TYPE_SFIXED64
-          | TYPE_SINT32
-          | TYPE_SINT64
-          deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable Type
- 
-instance P'.Bounded Type where
-  minBound = TYPE_DOUBLE
-  maxBound = TYPE_SINT64
- 
-instance P'.Default Type where
-  defaultValue = TYPE_DOUBLE
- 
-toMaybe'Enum :: P'.Int -> P'.Maybe Type
-toMaybe'Enum 1 = P'.Just TYPE_DOUBLE
-toMaybe'Enum 2 = P'.Just TYPE_FLOAT
-toMaybe'Enum 3 = P'.Just TYPE_INT64
-toMaybe'Enum 4 = P'.Just TYPE_UINT64
-toMaybe'Enum 5 = P'.Just TYPE_INT32
-toMaybe'Enum 6 = P'.Just TYPE_FIXED64
-toMaybe'Enum 7 = P'.Just TYPE_FIXED32
-toMaybe'Enum 8 = P'.Just TYPE_BOOL
-toMaybe'Enum 9 = P'.Just TYPE_STRING
-toMaybe'Enum 10 = P'.Just TYPE_GROUP
-toMaybe'Enum 11 = P'.Just TYPE_MESSAGE
-toMaybe'Enum 12 = P'.Just TYPE_BYTES
-toMaybe'Enum 13 = P'.Just TYPE_UINT32
-toMaybe'Enum 14 = P'.Just TYPE_ENUM
-toMaybe'Enum 15 = P'.Just TYPE_SFIXED32
-toMaybe'Enum 16 = P'.Just TYPE_SFIXED64
-toMaybe'Enum 17 = P'.Just TYPE_SINT32
-toMaybe'Enum 18 = P'.Just TYPE_SINT64
-toMaybe'Enum _ = P'.Nothing
- 
-instance P'.Enum Type where
-  fromEnum (TYPE_DOUBLE) = 1
-  fromEnum (TYPE_FLOAT) = 2
-  fromEnum (TYPE_INT64) = 3
-  fromEnum (TYPE_UINT64) = 4
-  fromEnum (TYPE_INT32) = 5
-  fromEnum (TYPE_FIXED64) = 6
-  fromEnum (TYPE_FIXED32) = 7
-  fromEnum (TYPE_BOOL) = 8
-  fromEnum (TYPE_STRING) = 9
-  fromEnum (TYPE_GROUP) = 10
-  fromEnum (TYPE_MESSAGE) = 11
-  fromEnum (TYPE_BYTES) = 12
-  fromEnum (TYPE_UINT32) = 13
-  fromEnum (TYPE_ENUM) = 14
-  fromEnum (TYPE_SFIXED32) = 15
-  fromEnum (TYPE_SFIXED64) = 16
-  fromEnum (TYPE_SINT32) = 17
-  fromEnum (TYPE_SINT64) = 18
-  toEnum
-   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldDescriptorProto.Type") .
-      toMaybe'Enum
-  succ (TYPE_DOUBLE) = TYPE_FLOAT
-  succ (TYPE_FLOAT) = TYPE_INT64
-  succ (TYPE_INT64) = TYPE_UINT64
-  succ (TYPE_UINT64) = TYPE_INT32
-  succ (TYPE_INT32) = TYPE_FIXED64
-  succ (TYPE_FIXED64) = TYPE_FIXED32
-  succ (TYPE_FIXED32) = TYPE_BOOL
-  succ (TYPE_BOOL) = TYPE_STRING
-  succ (TYPE_STRING) = TYPE_GROUP
-  succ (TYPE_GROUP) = TYPE_MESSAGE
-  succ (TYPE_MESSAGE) = TYPE_BYTES
-  succ (TYPE_BYTES) = TYPE_UINT32
-  succ (TYPE_UINT32) = TYPE_ENUM
-  succ (TYPE_ENUM) = TYPE_SFIXED32
-  succ (TYPE_SFIXED32) = TYPE_SFIXED64
-  succ (TYPE_SFIXED64) = TYPE_SINT32
-  succ (TYPE_SINT32) = TYPE_SINT64
-  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldDescriptorProto.Type"
-  pred (TYPE_FLOAT) = TYPE_DOUBLE
-  pred (TYPE_INT64) = TYPE_FLOAT
-  pred (TYPE_UINT64) = TYPE_INT64
-  pred (TYPE_INT32) = TYPE_UINT64
-  pred (TYPE_FIXED64) = TYPE_INT32
-  pred (TYPE_FIXED32) = TYPE_FIXED64
-  pred (TYPE_BOOL) = TYPE_FIXED32
-  pred (TYPE_STRING) = TYPE_BOOL
-  pred (TYPE_GROUP) = TYPE_STRING
-  pred (TYPE_MESSAGE) = TYPE_GROUP
-  pred (TYPE_BYTES) = TYPE_MESSAGE
-  pred (TYPE_UINT32) = TYPE_BYTES
-  pred (TYPE_ENUM) = TYPE_UINT32
-  pred (TYPE_SFIXED32) = TYPE_ENUM
-  pred (TYPE_SFIXED64) = TYPE_SFIXED32
-  pred (TYPE_SINT32) = TYPE_SFIXED64
-  pred (TYPE_SINT64) = TYPE_SINT32
-  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldDescriptorProto.Type"
- 
-instance P'.Wire Type where
-  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
-  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
-  wireGet 14 = P'.wireGetEnum toMaybe'Enum
-  wireGet ft' = P'.wireGetErr ft'
-  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
-  wireGetPacked ft' = P'.wireGetErr ft'
- 
-instance P'.GPB Type
- 
-instance P'.MessageAPI msg' (msg' -> Type) Type where
-  getVal m' f' = f' m'
- 
-instance P'.ReflectEnum Type where
-  reflectEnum
-   = [(1, "TYPE_DOUBLE", TYPE_DOUBLE), (2, "TYPE_FLOAT", TYPE_FLOAT), (3, "TYPE_INT64", TYPE_INT64),
-      (4, "TYPE_UINT64", TYPE_UINT64), (5, "TYPE_INT32", TYPE_INT32), (6, "TYPE_FIXED64", TYPE_FIXED64),
-      (7, "TYPE_FIXED32", TYPE_FIXED32), (8, "TYPE_BOOL", TYPE_BOOL), (9, "TYPE_STRING", TYPE_STRING),
-      (10, "TYPE_GROUP", TYPE_GROUP), (11, "TYPE_MESSAGE", TYPE_MESSAGE), (12, "TYPE_BYTES", TYPE_BYTES),
-      (13, "TYPE_UINT32", TYPE_UINT32), (14, "TYPE_ENUM", TYPE_ENUM), (15, "TYPE_SFIXED32", TYPE_SFIXED32),
-      (16, "TYPE_SFIXED64", TYPE_SFIXED64), (17, "TYPE_SINT32", TYPE_SINT32), (18, "TYPE_SINT64", TYPE_SINT64)]
-  reflectEnumInfo _
-   = P'.EnumInfo
-      (P'.makePNF (P'.pack ".google.protobuf.FieldDescriptorProto.Type") ["Text"] ["DescriptorProtos", "FieldDescriptorProto"]
-        "Type")
-      ["Text", "DescriptorProtos", "FieldDescriptorProto", "Type.hs"]
-      [(1, "TYPE_DOUBLE"), (2, "TYPE_FLOAT"), (3, "TYPE_INT64"), (4, "TYPE_UINT64"), (5, "TYPE_INT32"), (6, "TYPE_FIXED64"),
-       (7, "TYPE_FIXED32"), (8, "TYPE_BOOL"), (9, "TYPE_STRING"), (10, "TYPE_GROUP"), (11, "TYPE_MESSAGE"), (12, "TYPE_BYTES"),
-       (13, "TYPE_UINT32"), (14, "TYPE_ENUM"), (15, "TYPE_SFIXED32"), (16, "TYPE_SFIXED64"), (17, "TYPE_SINT32"),
-       (18, "TYPE_SINT64")]
diff --git a/Text/DescriptorProtos/FieldOptions.hs b/Text/DescriptorProtos/FieldOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FieldOptions.hs
+++ /dev/null
@@ -1,82 +0,0 @@
-module Text.DescriptorProtos.FieldOptions (FieldOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.FieldOptions.CType as DescriptorProtos.FieldOptions (CType)
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data FieldOptions = FieldOptions{ctype :: P'.Maybe DescriptorProtos.FieldOptions.CType, packed :: P'.Maybe P'.Bool,
-                                 deprecated :: P'.Maybe P'.Bool, experimental_map_key :: P'.Maybe P'.Utf8,
-                                 uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                  deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage FieldOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable FieldOptions where
-  mergeEmpty = FieldOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (FieldOptions x'1 x'2 x'3 x'4 x'5 x'6) (FieldOptions y'1 y'2 y'3 y'4 y'5 y'6)
-   = FieldOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
- 
-instance P'.Default FieldOptions where
-  defaultValue = FieldOptions P'.defaultValue P'.defaultValue (P'.Just P'.False) P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire FieldOptions where
-  wireSize ft' self'@(FieldOptions x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeOpt 1 14 x'1 + P'.wireSizeOpt 1 8 x'2 + P'.wireSizeOpt 1 8 x'3 + P'.wireSizeOpt 1 9 x'4 +
-             P'.wireSizeRep 2 11 x'5
-             + P'.wireSizeExtField x'6)
-  wirePut ft' self'@(FieldOptions x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 8 14 x'1
-             P'.wirePutOpt 16 8 x'2
-             P'.wirePutOpt 24 8 x'3
-             P'.wirePutOpt 74 9 x'4
-             P'.wirePutRep 7994 11 x'5
-             P'.wirePutExtField x'6
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             8 -> P'.fmap (\ new'Field -> old'Self{ctype = P'.Just new'Field}) (P'.wireGet 14)
-             16 -> P'.fmap (\ new'Field -> old'Self{packed = P'.Just new'Field}) (P'.wireGet 8)
-             24 -> P'.fmap (\ new'Field -> old'Self{deprecated = P'.Just new'Field}) (P'.wireGet 8)
-             74 -> P'.fmap (\ new'Field -> old'Self{experimental_map_key = P'.Just new'Field}) (P'.wireGet 9)
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> FieldOptions) FieldOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB FieldOptions
- 
-instance P'.ReflectDescriptor FieldOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 16, 24, 74, 7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.ctype\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"ctype\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.packed\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"packed\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.deprecated\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"deprecated\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.experimental_map_key\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"experimental_map_key\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 74}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FieldOptions/CType.hs b/Text/DescriptorProtos/FieldOptions/CType.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FieldOptions/CType.hs
+++ /dev/null
@@ -1,53 +0,0 @@
-module Text.DescriptorProtos.FieldOptions.CType (CType(..)) where
-import Prelude ((+), (.))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data CType = CORD
-           | STRING_PIECE
-           deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable CType
- 
-instance P'.Bounded CType where
-  minBound = CORD
-  maxBound = STRING_PIECE
- 
-instance P'.Default CType where
-  defaultValue = CORD
- 
-toMaybe'Enum :: P'.Int -> P'.Maybe CType
-toMaybe'Enum 1 = P'.Just CORD
-toMaybe'Enum 2 = P'.Just STRING_PIECE
-toMaybe'Enum _ = P'.Nothing
- 
-instance P'.Enum CType where
-  fromEnum (CORD) = 1
-  fromEnum (STRING_PIECE) = 2
-  toEnum
-   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldOptions.CType") .
-      toMaybe'Enum
-  succ (CORD) = STRING_PIECE
-  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldOptions.CType"
-  pred (STRING_PIECE) = CORD
-  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldOptions.CType"
- 
-instance P'.Wire CType where
-  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
-  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
-  wireGet 14 = P'.wireGetEnum toMaybe'Enum
-  wireGet ft' = P'.wireGetErr ft'
-  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
-  wireGetPacked ft' = P'.wireGetErr ft'
- 
-instance P'.GPB CType
- 
-instance P'.MessageAPI msg' (msg' -> CType) CType where
-  getVal m' f' = f' m'
- 
-instance P'.ReflectEnum CType where
-  reflectEnum = [(1, "CORD", CORD), (2, "STRING_PIECE", STRING_PIECE)]
-  reflectEnumInfo _
-   = P'.EnumInfo (P'.makePNF (P'.pack ".google.protobuf.FieldOptions.CType") ["Text"] ["DescriptorProtos", "FieldOptions"] "CType")
-      ["Text", "DescriptorProtos", "FieldOptions", "CType.hs"]
-      [(1, "CORD"), (2, "STRING_PIECE")]
diff --git a/Text/DescriptorProtos/FileDescriptorProto.hs b/Text/DescriptorProtos/FileDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FileDescriptorProto.hs
+++ /dev/null
@@ -1,95 +0,0 @@
-module Text.DescriptorProtos.FileDescriptorProto (FileDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.DescriptorProto as DescriptorProtos (DescriptorProto)
-import qualified Text.DescriptorProtos.EnumDescriptorProto as DescriptorProtos (EnumDescriptorProto)
-import qualified Text.DescriptorProtos.FieldDescriptorProto as DescriptorProtos (FieldDescriptorProto)
-import qualified Text.DescriptorProtos.FileOptions as DescriptorProtos (FileOptions)
-import qualified Text.DescriptorProtos.ServiceDescriptorProto as DescriptorProtos (ServiceDescriptorProto)
- 
-data FileDescriptorProto = FileDescriptorProto{name :: P'.Maybe P'.Utf8, package :: P'.Maybe P'.Utf8, dependency :: P'.Seq P'.Utf8,
-                                               message_type :: P'.Seq DescriptorProtos.DescriptorProto,
-                                               enum_type :: P'.Seq DescriptorProtos.EnumDescriptorProto,
-                                               service :: P'.Seq DescriptorProtos.ServiceDescriptorProto,
-                                               extension :: P'.Seq DescriptorProtos.FieldDescriptorProto,
-                                               options :: P'.Maybe DescriptorProtos.FileOptions}
-                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable FileDescriptorProto where
-  mergeEmpty
-   = FileDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-      P'.mergeEmpty
-  mergeAppend (FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8) (FileDescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7 y'8)
-   = FileDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
-      (P'.mergeAppend x'7 y'7)
-      (P'.mergeAppend x'8 y'8)
- 
-instance P'.Default FileDescriptorProto where
-  defaultValue
-   = FileDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
-      P'.defaultValue
-      P'.defaultValue
- 
-instance P'.Wire FileDescriptorProto where
-  wireSize ft' self'@(FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeRep 1 9 x'3 + P'.wireSizeRep 1 11 x'4 +
-             P'.wireSizeRep 1 11 x'5
-             + P'.wireSizeRep 1 11 x'6
-             + P'.wireSizeRep 1 11 x'7
-             + P'.wireSizeOpt 1 11 x'8)
-  wirePut ft' self'@(FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutOpt 18 9 x'2
-             P'.wirePutRep 26 9 x'3
-             P'.wirePutRep 34 11 x'4
-             P'.wirePutRep 42 11 x'5
-             P'.wirePutRep 50 11 x'6
-             P'.wirePutRep 58 11 x'7
-             P'.wirePutOpt 66 11 x'8
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{package = P'.Just new'Field}) (P'.wireGet 9)
-             26 -> P'.fmap (\ new'Field -> old'Self{dependency = P'.append (dependency old'Self) new'Field}) (P'.wireGet 9)
-             34 -> P'.fmap (\ new'Field -> old'Self{message_type = P'.append (message_type old'Self) new'Field}) (P'.wireGet 11)
-             42 -> P'.fmap (\ new'Field -> old'Self{enum_type = P'.append (enum_type old'Self) new'Field}) (P'.wireGet 11)
-             50 -> P'.fmap (\ new'Field -> old'Self{service = P'.append (service old'Self) new'Field}) (P'.wireGet 11)
-             58 -> P'.fmap (\ new'Field -> old'Self{extension = P'.append (extension old'Self) new'Field}) (P'.wireGet 11)
-             66 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> FileDescriptorProto) FileDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB FileDescriptorProto
- 
-instance P'.ReflectDescriptor FileDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34, 42, 50, 58, 66])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"package\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.dependency\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"dependency\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.message_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"message_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.service\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"service\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FileDescriptorSet.hs b/Text/DescriptorProtos/FileDescriptorSet.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FileDescriptorSet.hs
+++ /dev/null
@@ -1,56 +0,0 @@
-module Text.DescriptorProtos.FileDescriptorSet (FileDescriptorSet(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.FileDescriptorProto as DescriptorProtos (FileDescriptorProto)
- 
-data FileDescriptorSet = FileDescriptorSet{file :: P'.Seq DescriptorProtos.FileDescriptorProto}
-                       deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable FileDescriptorSet where
-  mergeEmpty = FileDescriptorSet P'.mergeEmpty
-  mergeAppend (FileDescriptorSet x'1) (FileDescriptorSet y'1) = FileDescriptorSet (P'.mergeAppend x'1 y'1)
- 
-instance P'.Default FileDescriptorSet where
-  defaultValue = FileDescriptorSet P'.defaultValue
- 
-instance P'.Wire FileDescriptorSet where
-  wireSize ft' self'@(FileDescriptorSet x'1)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeRep 1 11 x'1)
-  wirePut ft' self'@(FileDescriptorSet x'1)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 10 11 x'1
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{file = P'.append (file old'Self) new'Field}) (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> FileDescriptorSet) FileDescriptorSet where
-  getVal m' f' = f' m'
- 
-instance P'.GPB FileDescriptorSet
- 
-instance P'.ReflectDescriptor FileDescriptorSet where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorSet\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorSet\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorSet.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorSet.file\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorSet\"], baseName' = FName \"file\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FileOptions.hs b/Text/DescriptorProtos/FileOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FileOptions.hs
+++ /dev/null
@@ -1,84 +0,0 @@
-module Text.DescriptorProtos.FileOptions (FileOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.FileOptions.OptimizeMode as DescriptorProtos.FileOptions (OptimizeMode)
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data FileOptions = FileOptions{java_package :: P'.Maybe P'.Utf8, java_outer_classname :: P'.Maybe P'.Utf8,
-                               java_multiple_files :: P'.Maybe P'.Bool,
-                               optimize_for :: P'.Maybe DescriptorProtos.FileOptions.OptimizeMode,
-                               uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                 deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage FileOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable FileOptions where
-  mergeEmpty = FileOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (FileOptions x'1 x'2 x'3 x'4 x'5 x'6) (FileOptions y'1 y'2 y'3 y'4 y'5 y'6)
-   = FileOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
- 
-instance P'.Default FileOptions where
-  defaultValue
-   = FileOptions P'.defaultValue P'.defaultValue (P'.Just P'.False) (P'.Just (P'.read "SPEED")) P'.defaultValue P'.defaultValue
- 
-instance P'.Wire FileOptions where
-  wireSize ft' self'@(FileOptions x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 8 x'3 + P'.wireSizeOpt 1 14 x'4 +
-             P'.wireSizeRep 2 11 x'5
-             + P'.wireSizeExtField x'6)
-  wirePut ft' self'@(FileOptions x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutOpt 66 9 x'2
-             P'.wirePutOpt 72 14 x'4
-             P'.wirePutOpt 80 8 x'3
-             P'.wirePutRep 7994 11 x'5
-             P'.wirePutExtField x'6
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{java_package = P'.Just new'Field}) (P'.wireGet 9)
-             66 -> P'.fmap (\ new'Field -> old'Self{java_outer_classname = P'.Just new'Field}) (P'.wireGet 9)
-             80 -> P'.fmap (\ new'Field -> old'Self{java_multiple_files = P'.Just new'Field}) (P'.wireGet 8)
-             72 -> P'.fmap (\ new'Field -> old'Self{optimize_for = P'.Just new'Field}) (P'.wireGet 14)
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> FileOptions) FileOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB FileOptions
- 
-instance P'.ReflectDescriptor FileOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 66, 72, 80, 7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_package\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_outer_classname\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_outer_classname\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_multiple_files\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_multiple_files\"}, fieldNumber = FieldId {getFieldId = 10}, wireTag = WireTag {getWireTag = 80}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.optimize_for\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"optimize_for\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 72}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}), hsRawDefault = Just (Chunk \"SPEED\" Empty), hsDefault = Just (HsDef'Enum \"SPEED\")},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/FileOptions/OptimizeMode.hs b/Text/DescriptorProtos/FileOptions/OptimizeMode.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/FileOptions/OptimizeMode.hs
+++ /dev/null
@@ -1,54 +0,0 @@
-module Text.DescriptorProtos.FileOptions.OptimizeMode (OptimizeMode(..)) where
-import Prelude ((+), (.))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data OptimizeMode = SPEED
-                  | CODE_SIZE
-                  deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable OptimizeMode
- 
-instance P'.Bounded OptimizeMode where
-  minBound = SPEED
-  maxBound = CODE_SIZE
- 
-instance P'.Default OptimizeMode where
-  defaultValue = SPEED
- 
-toMaybe'Enum :: P'.Int -> P'.Maybe OptimizeMode
-toMaybe'Enum 1 = P'.Just SPEED
-toMaybe'Enum 2 = P'.Just CODE_SIZE
-toMaybe'Enum _ = P'.Nothing
- 
-instance P'.Enum OptimizeMode where
-  fromEnum (SPEED) = 1
-  fromEnum (CODE_SIZE) = 2
-  toEnum
-   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FileOptions.OptimizeMode") .
-      toMaybe'Enum
-  succ (SPEED) = CODE_SIZE
-  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FileOptions.OptimizeMode"
-  pred (CODE_SIZE) = SPEED
-  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FileOptions.OptimizeMode"
- 
-instance P'.Wire OptimizeMode where
-  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
-  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
-  wireGet 14 = P'.wireGetEnum toMaybe'Enum
-  wireGet ft' = P'.wireGetErr ft'
-  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
-  wireGetPacked ft' = P'.wireGetErr ft'
- 
-instance P'.GPB OptimizeMode
- 
-instance P'.MessageAPI msg' (msg' -> OptimizeMode) OptimizeMode where
-  getVal m' f' = f' m'
- 
-instance P'.ReflectEnum OptimizeMode where
-  reflectEnum = [(1, "SPEED", SPEED), (2, "CODE_SIZE", CODE_SIZE)]
-  reflectEnumInfo _
-   = P'.EnumInfo
-      (P'.makePNF (P'.pack ".google.protobuf.FileOptions.OptimizeMode") ["Text"] ["DescriptorProtos", "FileOptions"] "OptimizeMode")
-      ["Text", "DescriptorProtos", "FileOptions", "OptimizeMode.hs"]
-      [(1, "SPEED"), (2, "CODE_SIZE")]
diff --git a/Text/DescriptorProtos/MessageOptions.hs b/Text/DescriptorProtos/MessageOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/MessageOptions.hs
+++ /dev/null
@@ -1,69 +0,0 @@
-module Text.DescriptorProtos.MessageOptions (MessageOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data MessageOptions = MessageOptions{message_set_wire_format :: P'.Maybe P'.Bool,
-                                     uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage MessageOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable MessageOptions where
-  mergeEmpty = MessageOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (MessageOptions x'1 x'2 x'3) (MessageOptions y'1 y'2 y'3)
-   = MessageOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
- 
-instance P'.Default MessageOptions where
-  defaultValue = MessageOptions (P'.Just P'.False) P'.defaultValue P'.defaultValue
- 
-instance P'.Wire MessageOptions where
-  wireSize ft' self'@(MessageOptions x'1 x'2 x'3)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 8 x'1 + P'.wireSizeRep 2 11 x'2 + P'.wireSizeExtField x'3)
-  wirePut ft' self'@(MessageOptions x'1 x'2 x'3)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 8 8 x'1
-             P'.wirePutRep 7994 11 x'2
-             P'.wirePutExtField x'3
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             8 -> P'.fmap (\ new'Field -> old'Self{message_set_wire_format = P'.Just new'Field}) (P'.wireGet 8)
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> MessageOptions) MessageOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB MessageOptions
- 
-instance P'.ReflectDescriptor MessageOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MessageOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.message_set_wire_format\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"message_set_wire_format\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/MethodDescriptorProto.hs b/Text/DescriptorProtos/MethodDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/MethodDescriptorProto.hs
+++ /dev/null
@@ -1,66 +0,0 @@
-module Text.DescriptorProtos.MethodDescriptorProto (MethodDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.MethodOptions as DescriptorProtos (MethodOptions)
- 
-data MethodDescriptorProto = MethodDescriptorProto{name :: P'.Maybe P'.Utf8, input_type :: P'.Maybe P'.Utf8,
-                                                   output_type :: P'.Maybe P'.Utf8,
-                                                   options :: P'.Maybe DescriptorProtos.MethodOptions}
-                           deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable MethodDescriptorProto where
-  mergeEmpty = MethodDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (MethodDescriptorProto x'1 x'2 x'3 x'4) (MethodDescriptorProto y'1 y'2 y'3 y'4)
-   = MethodDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
- 
-instance P'.Default MethodDescriptorProto where
-  defaultValue = MethodDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire MethodDescriptorProto where
-  wireSize ft' self'@(MethodDescriptorProto x'1 x'2 x'3 x'4)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 9 x'3 + P'.wireSizeOpt 1 11 x'4)
-  wirePut ft' self'@(MethodDescriptorProto x'1 x'2 x'3 x'4)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutOpt 18 9 x'2
-             P'.wirePutOpt 26 9 x'3
-             P'.wirePutOpt 34 11 x'4
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{input_type = P'.Just new'Field}) (P'.wireGet 9)
-             26 -> P'.fmap (\ new'Field -> old'Self{output_type = P'.Just new'Field}) (P'.wireGet 9)
-             34 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> MethodDescriptorProto) MethodDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB MethodDescriptorProto
- 
-instance P'.ReflectDescriptor MethodDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.input_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"input_type\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.output_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"output_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/MethodOptions.hs b/Text/DescriptorProtos/MethodOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/MethodOptions.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Text.DescriptorProtos.MethodOptions (MethodOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data MethodOptions = MethodOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                   deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage MethodOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable MethodOptions where
-  mergeEmpty = MethodOptions P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (MethodOptions x'1 x'2) (MethodOptions y'1 y'2) = MethodOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default MethodOptions where
-  defaultValue = MethodOptions P'.defaultValue P'.defaultValue
- 
-instance P'.Wire MethodOptions where
-  wireSize ft' self'@(MethodOptions x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2)
-  wirePut ft' self'@(MethodOptions x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 7994 11 x'1
-             P'.wirePutExtField x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> MethodOptions) MethodOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB MethodOptions
- 
-instance P'.ReflectDescriptor MethodOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/Options.hs b/Text/DescriptorProtos/Options.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/Options.hs
+++ /dev/null
@@ -1,205 +0,0 @@
-{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts #-}
-{-| This module provides a less verbose API for accessing the options
-    of the various descriptor messages types.  There are seven
-    different option types.  The EnumValueOptions are not currently
-    settable in the proto file.  To access extension keys the
-    descendKey functions are provided as the descend functions ignore
-    them.  The 'toDP', 'toEP', 'toSP' are type-specific descents that
-    are demonstrated in the the tests below.  They are useful in that
-    they provide more information for the type-checker.  The 'toFP',
-    'toEVP', and 'toMP' are fully type-specific descents but are
-    needed to make the tests below type-check, though they could have
-    been used in 'test4', test5', and 'test7'.
-
-> import Text.DescriptorProtos.Options
-> import Text.DescriptorProtos(fileDescriptorProto)
-> 
-> test1 :: D.FileOptions
-> test1 = options fileDescriptorProto
-> 
-> test2 :: Maybe D.MessageOptions
-> test2 = return fileDescriptorProto >>= descend "FieldDescriptorProto" >>= return . options
-> 
-> test3 :: Maybe D.EnumOptions
-> test3 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= descend "Type" >>= return . options
-> 
-> test4 :: Maybe D.EnumValueOptions
-> test4 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= toEP "Type" >>= descend "TYPE_DOUBLE" >>= return . options
-> 
-> test5 :: Maybe D.FieldOptions
-> test5 = return fileDescriptorProto >>= toDP "DescriptorProto" >>= toDP "ExtensionRange" >>= descend "start" >>= return . options
-> 
-> test6 :: Maybe D.ServiceOptions
-> test6 = return fileDescriptorProto >>= descend "ImaginaryService" >>= return . options
-> 
-> test7 :: Maybe D.MethodOptions
-> test7 = return fileDescriptorProto >>= toSP "ImaginaryService" >>= descend "ImaginaryMethod" >>= return . options
--}
-module Text.DescriptorProtos.Options(name,options,descend',descend,descendKey',descendKey
-                                    ,toDP,toEP,toSP,toFP,toEVP,toMP
-                                    ,NameAndOptions,DescendClass,DescendKey
-                                    ,D.FileDescriptorProto,D.DescriptorProto,D.EnumDescriptorProto
-                                    ,D.EnumValueDescriptorProto,D.FieldDescriptorProto
-                                    ,D.ServiceDescriptorProto,D.MethodDescriptorProto
-                                    ,D.EnumOptions,D.EnumValueOptions,D.FieldOptions
-                                    ,D.FileOptions,D.MessageOptions,D.MethodOptions,D.ServiceOptions) where
-
-import qualified Text.DescriptorProtos.DescriptorProto                as D(DescriptorProto)
-import qualified Text.DescriptorProtos.DescriptorProto                as D.DescriptorProto(DescriptorProto(..))
-import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as D(ExtensionRange(ExtensionRange))
-import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as D.ExtensionRange(ExtensionRange(..))
-import qualified Text.DescriptorProtos.EnumDescriptorProto            as D(EnumDescriptorProto(EnumDescriptorProto))
-import qualified Text.DescriptorProtos.EnumDescriptorProto            as D.EnumDescriptorProto(EnumDescriptorProto(..))
-import qualified Text.DescriptorProtos.EnumValueDescriptorProto       as D(EnumValueDescriptorProto)
-import qualified Text.DescriptorProtos.EnumValueDescriptorProto       as D.EnumValueDescriptorProto(EnumValueDescriptorProto(..))
-import qualified Text.DescriptorProtos.FieldDescriptorProto           as D(FieldDescriptorProto)
-import qualified Text.DescriptorProtos.FieldDescriptorProto           as D.FieldDescriptorProto(FieldDescriptorProto(..))
-import qualified Text.DescriptorProtos.FieldDescriptorProto.Type      as D(Type)
-import           Text.DescriptorProtos.FieldDescriptorProto.Type      as D.Type(Type(..))
-import qualified Text.DescriptorProtos.FileDescriptorProto            as D(FileDescriptorProto)
-import qualified Text.DescriptorProtos.FileDescriptorProto            as D.FileDescriptorProto(FileDescriptorProto(..))
-import qualified Text.DescriptorProtos.MethodDescriptorProto          as D(MethodDescriptorProto)
-import qualified Text.DescriptorProtos.MethodDescriptorProto          as D.MethodDescriptorProto(MethodDescriptorProto(..))
-import qualified Text.DescriptorProtos.ServiceDescriptorProto         as D(ServiceDescriptorProto)
-import qualified Text.DescriptorProtos.ServiceDescriptorProto         as D.ServiceDescriptorProto(ServiceDescriptorProto(..))
-import qualified Text.DescriptorProtos.UninterpretedOption            as D(UninterpretedOption)
-import qualified Text.DescriptorProtos.UninterpretedOption            as D.UninterpretedOption(UninterpretedOption(..))
-import qualified Text.DescriptorProtos.UninterpretedOption.NamePart   as D(NamePart(NamePart))
-import qualified Text.DescriptorProtos.UninterpretedOption.NamePart   as D.NamePart(NamePart(..))
-import qualified Text.DescriptorProtos.EnumOptions      as D(EnumOptions)
-import qualified Text.DescriptorProtos.EnumOptions      as D.EnumOptions(EnumOptions(..))
-import qualified Text.DescriptorProtos.EnumValueOptions as D(EnumValueOptions)
-import qualified Text.DescriptorProtos.EnumValueOptions as D.EnumValueOptions(EnumValueOptions(..))
-import qualified Text.DescriptorProtos.FieldOptions     as D(FieldOptions)
-import qualified Text.DescriptorProtos.FieldOptions     as D.FieldOptions(FieldOptions(..))
-import qualified Text.DescriptorProtos.FileOptions      as D(FileOptions)
-import qualified Text.DescriptorProtos.FileOptions      as D.FileOptions(FileOptions(..))
-import qualified Text.DescriptorProtos.MessageOptions   as D(MessageOptions)
-import qualified Text.DescriptorProtos.MessageOptions   as D.MessageOptions(MessageOptions(..))
-import qualified Text.DescriptorProtos.MethodOptions    as D(MethodOptions)
-import qualified Text.DescriptorProtos.MethodOptions    as D.MethodOptions(MethodOptions(..))
-import qualified Text.DescriptorProtos.ServiceOptions   as D(ServiceOptions)
-import qualified Text.DescriptorProtos.ServiceOptions   as D.ServiceOptions(ServiceOptions(..))
-
-import Text.DescriptorProtos(fileDescriptorProto) -- for testing
-
-import Data.Maybe(listToMaybe)
-import Text.ProtocolBuffers(fromString,Utf8,getVal,Seq)
-import qualified Data.Foldable as F(toList)
-
-class DescendClass a c where
-  descend' :: a -> Utf8 -> (Maybe c)
-
-descend :: DescendClass a c => String -> a -> Maybe c
-descend = flip descend' . fromString
-
-class DescendKey a where
-  descendKey' :: a -> Utf8 -> Maybe D.FieldDescriptorProto
-
-descendKey :: DescendKey a => String -> a -> Maybe D.FieldDescriptorProto
-descendKey = flip descendKey' . fromString
-
-class NameAndOptions a opt | a -> opt, opt -> a where
-  name :: a -> Utf8
-  options :: a -> opt
-
--- helper
-search :: (NameAndOptions a b) => Seq a -> Utf8 -> Maybe a
-search s n = listToMaybe [ m | m <- F.toList s, n == name m ]
-
-instance DescendClass D.DescriptorProto D.DescriptorProto where
-  descend' dp = search (D.DescriptorProto.nested_type dp)
-
-instance DescendClass D.DescriptorProto D.EnumDescriptorProto where
-  descend' dp = search (D.DescriptorProto.enum_type dp)
-
-instance DescendClass D.DescriptorProto D.FieldDescriptorProto where
-  descend' dp = search (D.DescriptorProto.field dp)
-
-instance DescendClass D.FileDescriptorProto D.DescriptorProto where
-  descend' dp = search (D.FileDescriptorProto.message_type dp)
-
-instance DescendClass D.FileDescriptorProto D.EnumDescriptorProto where
-  descend' dp = search (D.FileDescriptorProto.enum_type dp)
-
-instance DescendClass D.FileDescriptorProto D.ServiceDescriptorProto where
-  descend' dp = search (D.FileDescriptorProto.service dp)
-
-instance DescendClass D.EnumDescriptorProto D.EnumValueDescriptorProto where
-  descend' dp = search (D.EnumDescriptorProto.value dp)
-
-instance DescendClass D.ServiceDescriptorProto D.MethodDescriptorProto where
-  descend' dp = search (D.ServiceDescriptorProto.method dp)
-
-instance DescendKey D.FileDescriptorProto where
-  descendKey' dp = search (D.FileDescriptorProto.extension dp)
-
-instance DescendKey D.DescriptorProto where
-  descendKey' dp = search (D.DescriptorProto.extension dp)
-
-instance NameAndOptions D.FileDescriptorProto D.FileOptions where
-  name = flip getVal D.FileDescriptorProto.name
-  options = flip getVal D.FileDescriptorProto.options
-
-instance NameAndOptions D.DescriptorProto D.MessageOptions where
-  name = flip getVal D.DescriptorProto.name
-  options = flip getVal D.DescriptorProto.options
-
-instance NameAndOptions D.FieldDescriptorProto D.FieldOptions where
-  name = flip getVal D.FieldDescriptorProto.name
-  options = flip getVal D.FieldDescriptorProto.options
-
-instance NameAndOptions D.ServiceDescriptorProto D.ServiceOptions where
-  name = flip getVal D.ServiceDescriptorProto.name
-  options = flip getVal D.ServiceDescriptorProto.options
-
-instance NameAndOptions D.MethodDescriptorProto D.MethodOptions where
-  name = flip getVal D.MethodDescriptorProto.name
-  options = flip getVal D.MethodDescriptorProto.options
-
-instance NameAndOptions D.EnumValueDescriptorProto D.EnumValueOptions where
-  name = flip getVal D.EnumValueDescriptorProto.name
-  options = flip getVal D.EnumValueDescriptorProto.options
-
-instance NameAndOptions D.EnumDescriptorProto D.EnumOptions where
-  name = flip getVal D.EnumDescriptorProto.name
-  options = flip getVal D.EnumDescriptorProto.options
-
-toDP :: DescendClass a D.DescriptorProto => String -> a -> Maybe D.DescriptorProto
-toDP s a = descend' a (fromString s)
-
-toEP :: DescendClass a D.EnumDescriptorProto => String -> a -> Maybe D.EnumDescriptorProto
-toEP s a = descend' a (fromString s)
-
-toSP :: String -> D.FileDescriptorProto -> Maybe D.ServiceDescriptorProto
-toSP s a = descend' a (fromString s)
-
-toFP :: String -> D.DescriptorProto -> Maybe D.FieldDescriptorProto
-toFP s a = descend' a (fromString s)
-
-toEVP :: String -> D.EnumDescriptorProto -> Maybe D.EnumValueDescriptorProto
-toEVP s a = descend' a (fromString s)
-
-toMP :: String -> D.ServiceDescriptorProto -> Maybe D.MethodDescriptorProto
-toMP s a = descend' a (fromString s)
-
-test1 :: D.FileOptions
-test1 = options fileDescriptorProto
-
-test2 :: Maybe D.MessageOptions
-test2 = return fileDescriptorProto >>= descend "FieldDescriptorProto" >>= return . options
-
-test3 :: Maybe D.EnumOptions
-test3 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= descend "Type" >>= return . options
-
-test4 :: Maybe D.EnumValueOptions
-test4 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= toEP "Type" >>= descend "TYPE_DOUBLE" >>= return . options
-
-test5 :: Maybe D.FieldOptions
-test5 = return fileDescriptorProto >>= toDP "DescriptorProto" >>= toDP "ExtensionRange" >>= descend "start" >>= return . options
-
-test6 :: Maybe D.ServiceOptions
-test6 = return fileDescriptorProto >>= descend "ImaginaryService" >>= return . options
-
-test7 :: Maybe D.MethodOptions
-test7 = return fileDescriptorProto >>= toSP "ImaginaryService" >>= descend "ImaginaryMethod" >>= return . options
diff --git a/Text/DescriptorProtos/ServiceDescriptorProto.hs b/Text/DescriptorProtos/ServiceDescriptorProto.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/ServiceDescriptorProto.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Text.DescriptorProtos.ServiceDescriptorProto (ServiceDescriptorProto(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.MethodDescriptorProto as DescriptorProtos (MethodDescriptorProto)
-import qualified Text.DescriptorProtos.ServiceOptions as DescriptorProtos (ServiceOptions)
- 
-data ServiceDescriptorProto = ServiceDescriptorProto{name :: P'.Maybe P'.Utf8,
-                                                     method :: P'.Seq DescriptorProtos.MethodDescriptorProto,
-                                                     options :: P'.Maybe DescriptorProtos.ServiceOptions}
-                            deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable ServiceDescriptorProto where
-  mergeEmpty = ServiceDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (ServiceDescriptorProto x'1 x'2 x'3) (ServiceDescriptorProto y'1 y'2 y'3)
-   = ServiceDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
- 
-instance P'.Default ServiceDescriptorProto where
-  defaultValue = ServiceDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire ServiceDescriptorProto where
-  wireSize ft' self'@(ServiceDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeOpt 1 11 x'3)
-  wirePut ft' self'@(ServiceDescriptorProto x'1 x'2 x'3)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutOpt 10 9 x'1
-             P'.wirePutRep 18 11 x'2
-             P'.wirePutOpt 26 11 x'3
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
-             18 -> P'.fmap (\ new'Field -> old'Self{method = P'.append (method old'Self) new'Field}) (P'.wireGet 11)
-             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
-                    (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> ServiceDescriptorProto) ServiceDescriptorProto where
-  getVal m' f' = f' m'
- 
-instance P'.GPB ServiceDescriptorProto
- 
-instance P'.ReflectDescriptor ServiceDescriptorProto where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.method\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"method\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/ServiceOptions.hs b/Text/DescriptorProtos/ServiceOptions.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/ServiceOptions.hs
+++ /dev/null
@@ -1,65 +0,0 @@
-module Text.DescriptorProtos.ServiceOptions (ServiceOptions(..)) where
-import Prelude ((+), (==), (<=), (&&))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
- 
-data ServiceOptions = ServiceOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField}
-                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.ExtendMessage ServiceOptions where
-  getExtField = ext'field
-  putExtField e'f msg = msg{ext'field = e'f}
-  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
- 
-instance P'.Mergeable ServiceOptions where
-  mergeEmpty = ServiceOptions P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (ServiceOptions x'1 x'2) (ServiceOptions y'1 y'2) = ServiceOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default ServiceOptions where
-  defaultValue = ServiceOptions P'.defaultValue P'.defaultValue
- 
-instance P'.Wire ServiceOptions where
-  wireSize ft' self'@(ServiceOptions x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2)
-  wirePut ft' self'@(ServiceOptions x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 7994 11 x'1
-             P'.wirePutExtField x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
-                      (P'.wireGet 11)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
-                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
-                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> ServiceOptions) ServiceOptions where
-  getVal m' f' = f' m'
- 
-instance P'.GPB ServiceOptions
- 
-instance P'.ReflectDescriptor ServiceOptions where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/UninterpretedOption.hs b/Text/DescriptorProtos/UninterpretedOption.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/UninterpretedOption.hs
+++ /dev/null
@@ -1,75 +0,0 @@
-module Text.DescriptorProtos.UninterpretedOption (UninterpretedOption(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
-import qualified Text.DescriptorProtos.UninterpretedOption.NamePart as DescriptorProtos.UninterpretedOption (NamePart)
- 
-data UninterpretedOption = UninterpretedOption{name :: P'.Seq DescriptorProtos.UninterpretedOption.NamePart,
-                                               identifier_value :: P'.Maybe P'.Utf8, positive_int_value :: P'.Maybe P'.Word64,
-                                               negative_int_value :: P'.Maybe P'.Int64, double_value :: P'.Maybe P'.Double,
-                                               string_value :: P'.Maybe P'.ByteString}
-                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable UninterpretedOption where
-  mergeEmpty = UninterpretedOption P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6) (UninterpretedOption y'1 y'2 y'3 y'4 y'5 y'6)
-   = UninterpretedOption (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
-      (P'.mergeAppend x'5 y'5)
-      (P'.mergeAppend x'6 y'6)
- 
-instance P'.Default UninterpretedOption where
-  defaultValue = UninterpretedOption P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
- 
-instance P'.Wire UninterpretedOption where
-  wireSize ft' self'@(UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size
-         = (P'.wireSizeRep 1 11 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 4 x'3 + P'.wireSizeOpt 1 3 x'4 +
-             P'.wireSizeOpt 1 1 x'5
-             + P'.wireSizeOpt 1 12 x'6)
-  wirePut ft' self'@(UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutRep 18 11 x'1
-             P'.wirePutOpt 26 9 x'2
-             P'.wirePutOpt 32 4 x'3
-             P'.wirePutOpt 40 3 x'4
-             P'.wirePutOpt 49 1 x'5
-             P'.wirePutOpt 58 12 x'6
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             18 -> P'.fmap (\ new'Field -> old'Self{name = P'.append (name old'Self) new'Field}) (P'.wireGet 11)
-             26 -> P'.fmap (\ new'Field -> old'Self{identifier_value = P'.Just new'Field}) (P'.wireGet 9)
-             32 -> P'.fmap (\ new'Field -> old'Self{positive_int_value = P'.Just new'Field}) (P'.wireGet 4)
-             40 -> P'.fmap (\ new'Field -> old'Self{negative_int_value = P'.Just new'Field}) (P'.wireGet 3)
-             49 -> P'.fmap (\ new'Field -> old'Self{double_value = P'.Just new'Field}) (P'.wireGet 1)
-             58 -> P'.fmap (\ new'Field -> old'Self{string_value = P'.Just new'Field}) (P'.wireGet 12)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> UninterpretedOption) UninterpretedOption where
-  getVal m' f' = f' m'
- 
-instance P'.GPB UninterpretedOption
- 
-instance P'.ReflectDescriptor UninterpretedOption where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [18, 26, 32, 40, 49, 58])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.identifier_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"identifier_value\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.positive_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"positive_int_value\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 4}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.negative_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"negative_int_value\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 3}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.double_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"double_value\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 49}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 1}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.string_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"string_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 12}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/Text/DescriptorProtos/UninterpretedOption/NamePart.hs b/Text/DescriptorProtos/UninterpretedOption/NamePart.hs
deleted file mode 100644
--- a/Text/DescriptorProtos/UninterpretedOption/NamePart.hs
+++ /dev/null
@@ -1,57 +0,0 @@
-module Text.DescriptorProtos.UninterpretedOption.NamePart (NamePart(..)) where
-import Prelude ((+))
-import qualified Prelude as P'
-import qualified Text.ProtocolBuffers.Header as P'
- 
-data NamePart = NamePart{name_part :: P'.Utf8, is_extension :: P'.Bool}
-              deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
- 
-instance P'.Mergeable NamePart where
-  mergeEmpty = NamePart P'.mergeEmpty P'.mergeEmpty
-  mergeAppend (NamePart x'1 x'2) (NamePart y'1 y'2) = NamePart (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
- 
-instance P'.Default NamePart where
-  defaultValue = NamePart P'.defaultValue P'.defaultValue
- 
-instance P'.Wire NamePart where
-  wireSize ft' self'@(NamePart x'1 x'2)
-   = case ft' of
-       10 -> calc'Size
-       11 -> P'.prependMessageSize calc'Size
-       _ -> P'.wireSizeErr ft' self'
-    where
-        calc'Size = (P'.wireSizeReq 1 9 x'1 + P'.wireSizeReq 1 8 x'2)
-  wirePut ft' self'@(NamePart x'1 x'2)
-   = case ft' of
-       10 -> put'Fields
-       11 -> do
-               P'.putSize (P'.wireSize 10 self')
-               put'Fields
-       _ -> P'.wirePutErr ft' self'
-    where
-        put'Fields
-         = do
-             P'.wirePutReq 10 9 x'1
-             P'.wirePutReq 16 8 x'2
-  wireGet ft'
-   = case ft' of
-       10 -> P'.getBareMessageWith update'Self
-       11 -> P'.getMessageWith update'Self
-       _ -> P'.wireGetErr ft'
-    where
-        update'Self wire'Tag old'Self
-         = case wire'Tag of
-             10 -> P'.fmap (\ new'Field -> old'Self{name_part = new'Field}) (P'.wireGet 9)
-             16 -> P'.fmap (\ new'Field -> old'Self{is_extension = new'Field}) (P'.wireGet 8)
-             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
- 
-instance P'.MessageAPI msg' (msg' -> NamePart) NamePart where
-  getVal m' f' = f' m'
- 
-instance P'.GPB NamePart
- 
-instance P'.ReflectDescriptor NamePart where
-  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList [10, 16]) (P'.fromDistinctAscList [10, 16])
-  reflectDescriptorInfo _
-   = P'.read
-      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption\",\"NamePart.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.name_part\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"name_part\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.is_extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"is_extension\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False}"
diff --git a/protocol-buffers-descriptor.cabal b/protocol-buffers-descriptor.cabal
--- a/protocol-buffers-descriptor.cabal
+++ b/protocol-buffers-descriptor.cabal
@@ -1,5 +1,5 @@
 name:           protocol-buffers-descriptor
-version:        1.7.9
+version:        1.8.0
 cabal-version:  >= 1.6
 build-type:     Simple
 license:        BSD3
@@ -15,7 +15,8 @@
 category:       Text
 Tested-With:    GHC ==6.10.2
 data-files:     descriptor.proto
-extra-source-files: Setup.hs
+extra-source-files: README
+-- extra-source-files: Setup.hs
 -- extra-tmp-files:
 
 -- All but one module is generated by hprotoc from descriptor.proto.
@@ -25,6 +26,7 @@
     description: Choose the new smaller, split-up base package.
 
 Library
+  Hs-Source-Dirs:  src-auto-generated,src-hand-written
   ghc-options:  -O2
   exposed-modules: Text.DescriptorProtos.Options
                    Text.DescriptorProtos
@@ -51,7 +53,7 @@
                    Text.DescriptorProtos.UninterpretedOption
                    Text.DescriptorProtos.UninterpretedOption.NamePart
 
-  build-depends:   protocol-buffers == 1.7.9,
+  build-depends:   protocol-buffers == 1.8.0,
                    containers,
                    bytestring
 
diff --git a/src-auto-generated/Text/DescriptorProtos.hs b/src-auto-generated/Text/DescriptorProtos.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos.hs
@@ -0,0 +1,18 @@
+module Text.DescriptorProtos (protoInfo, fileDescriptorProto) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import Text.DescriptorProtos.FileDescriptorProto (FileDescriptorProto)
+import Text.ProtocolBuffers.Reflections (ProtoInfo)
+import qualified Text.ProtocolBuffers.WireMessage as P' (wireGet,getFromBS)
+ 
+protoInfo :: ProtoInfo
+protoInfo
+ = P'.read
+    "ProtoInfo {protoMod = ProtoName {protobufName = FIName \".google.protobuf\", haskellPrefix = [MName \"Text\"], parentModule = [], baseName = MName \"DescriptorProtos\"}, protoFilePath = [\"Text\",\"DescriptorProtos.hs\"], protoSource = \"descriptor.proto\", extensionKeys = fromList [], messages = [DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorSet\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorSet\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorSet.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorSet.file\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorSet\"], baseName' = FName \"file\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"package\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.dependency\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"dependency\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.message_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"message_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.service\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"service\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.field\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"field\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.nested_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"nested_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension_range\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension_range\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto\",\"ExtensionRange.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.start\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"start\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.end\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"end\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.label\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"label\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type'\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type_name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type_name\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.extendee\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"extendee\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.default_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"default_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"value\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.method\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"method\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.input_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"input_type\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.output_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"output_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_package\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_outer_classname\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_outer_classname\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_multiple_files\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_multiple_files\"}, fieldNumber = FieldId {getFieldId = 10}, wireTag = WireTag {getWireTag = 80}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.optimize_for\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"optimize_for\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 72}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}), hsRawDefault = Just (Chunk \"SPEED\" Empty), hsDefault = Just (HsDef'Enum \"SPEED\")},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MessageOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.message_set_wire_format\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"message_set_wire_format\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.ctype\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"ctype\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.packed\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"packed\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.deprecated\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"deprecated\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.experimental_map_key\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"experimental_map_key\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 74}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.identifier_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"identifier_value\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.positive_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"positive_int_value\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 4}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.negative_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"negative_int_value\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 3}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.double_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"double_value\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 49}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 1}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.string_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"string_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 12}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True},DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption\",\"NamePart.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.name_part\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"name_part\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.is_extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"is_extension\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}], enums = [EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto\",\"Type.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"TYPE_DOUBLE\"),(EnumCode {getEnumCode = 2},\"TYPE_FLOAT\"),(EnumCode {getEnumCode = 3},\"TYPE_INT64\"),(EnumCode {getEnumCode = 4},\"TYPE_UINT64\"),(EnumCode {getEnumCode = 5},\"TYPE_INT32\"),(EnumCode {getEnumCode = 6},\"TYPE_FIXED64\"),(EnumCode {getEnumCode = 7},\"TYPE_FIXED32\"),(EnumCode {getEnumCode = 8},\"TYPE_BOOL\"),(EnumCode {getEnumCode = 9},\"TYPE_STRING\"),(EnumCode {getEnumCode = 10},\"TYPE_GROUP\"),(EnumCode {getEnumCode = 11},\"TYPE_MESSAGE\"),(EnumCode {getEnumCode = 12},\"TYPE_BYTES\"),(EnumCode {getEnumCode = 13},\"TYPE_UINT32\"),(EnumCode {getEnumCode = 14},\"TYPE_ENUM\"),(EnumCode {getEnumCode = 15},\"TYPE_SFIXED32\"),(EnumCode {getEnumCode = 16},\"TYPE_SFIXED64\"),(EnumCode {getEnumCode = 17},\"TYPE_SINT32\"),(EnumCode {getEnumCode = 18},\"TYPE_SINT64\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto\",\"Label.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"LABEL_OPTIONAL\"),(EnumCode {getEnumCode = 2},\"LABEL_REQUIRED\"),(EnumCode {getEnumCode = 3},\"LABEL_REPEATED\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions\",\"OptimizeMode.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"SPEED\"),(EnumCode {getEnumCode = 2},\"CODE_SIZE\")]},EnumInfo {enumName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}, enumFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions\",\"CType.hs\"], enumValues = [(EnumCode {getEnumCode = 1},\"CORD\"),(EnumCode {getEnumCode = 2},\"STRING_PIECE\")]}], knownKeyMap = fromList []}"
+ 
+fileDescriptorProto :: FileDescriptorProto
+fileDescriptorProto
+ = P'.getFromBS (P'.wireGet 11)
+    (P'.pack
+      "\144\ESC\n\DLEdescriptor.proto\DC2\SIgoogle.protobuf\"G\n\DC1FileDescriptorSet\DC22\n\EOTfile\CAN\SOH \ETX(\v2$.google.protobuf.FileDescriptorProto\"\220\STX\n\DC3FileDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SI\n\apackage\CAN\STX \SOH(\t\DC2\DC2\n\ndependency\CAN\ETX \ETX(\t\DC26\n\fmessage_type\CAN\EOT \ETX(\v2 .google.protobuf.DescriptorProto\DC27\n\tenum_type\CAN\ENQ \ETX(\v2$.google.protobuf.EnumDescriptorProto\DC28\n\aservice\CAN\ACK \ETX(\v2'.google.protobuf.ServiceDescriptorProto\DC28\n\textension\CAN\a \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC2-\n\aoptions\CAN\b \SOH(\v2\FS.google.protobuf.FileOptions\"\169\ETX\n\SIDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC24\n\ENQfield\CAN\STX \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC28\n\textension\CAN\ACK \ETX(\v2%.google.protobuf.FieldDescriptorProto\DC25\n\vnested_type\CAN\ETX \ETX(\v2 .google.protobuf.DescriptorProto\DC27\n\tenum_type\CAN\EOT \ETX(\v2$.google.protobuf.EnumDescriptorProto\DC2H\n\SIextension_range\CAN\ENQ \ETX(\v2/.google.protobuf.DescriptorProto.ExtensionRange\DC20\n\aoptions\CAN\a \SOH(\v2\US.google.protobuf.MessageOptions\SUB,\n\SOExtensionRange\DC2\r\n\ENQstart\CAN\SOH \SOH(\ENQ\DC2\v\n\ETXend\CAN\STX \SOH(\ENQ\"\148\ENQ\n\DC4FieldDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SO\n\ACKnumber\CAN\ETX \SOH(\ENQ\DC2:\n\ENQlabel\CAN\EOT \SOH(\SO2+.google.protobuf.FieldDescriptorProto.Label\DC28\n\EOTtype\CAN\ENQ \SOH(\SO2*.google.protobuf.FieldDescriptorProto.Type\DC2\DC1\n\ttype_name\CAN\ACK \SOH(\t\DC2\DLE\n\bextendee\CAN\STX \SOH(\t\DC2\NAK\n\rdefault_value\CAN\a \SOH(\t\DC2.\n\aoptions\CAN\b \SOH(\v2\GS.google.protobuf.FieldOptions\"\182\STX\n\EOTType\DC2\SI\n\vTYPE_DOUBLE\DLE\SOH\DC2\SO\n\nTYPE_FLOAT\DLE\STX\DC2\SO\n\nTYPE_INT64\DLE\ETX\DC2\SI\n\vTYPE_UINT64\DLE\EOT\DC2\SO\n\nTYPE_INT32\DLE\ENQ\DC2\DLE\n\fTYPE_FIXED64\DLE\ACK\DC2\DLE\n\fTYPE_FIXED32\DLE\a\DC2\r\n\tTYPE_BOOL\DLE\b\DC2\SI\n\vTYPE_STRING\DLE\t\DC2\SO\n\nTYPE_GROUP\DLE\n\DC2\DLE\n\fTYPE_MESSAGE\DLE\v\DC2\SO\n\nTYPE_BYTES\DLE\f\DC2\SI\n\vTYPE_UINT32\DLE\r\DC2\r\n\tTYPE_ENUM\DLE\SO\DC2\DC1\n\rTYPE_SFIXED32\DLE\SI\DC2\DC1\n\rTYPE_SFIXED64\DLE\DLE\DC2\SI\n\vTYPE_SINT32\DLE\DC1\DC2\SI\n\vTYPE_SINT64\DLE\DC2\"C\n\ENQLabel\DC2\DC2\n\SOLABEL_OPTIONAL\DLE\SOH\DC2\DC2\n\SOLABEL_REQUIRED\DLE\STX\DC2\DC2\n\SOLABEL_REPEATED\DLE\ETX\"\140\SOH\n\DC3EnumDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC28\n\ENQvalue\CAN\STX \ETX(\v2).google.protobuf.EnumValueDescriptorProto\DC2-\n\aoptions\CAN\ETX \SOH(\v2\FS.google.protobuf.EnumOptions\"l\n\CANEnumValueDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\SO\n\ACKnumber\CAN\STX \SOH(\ENQ\DC22\n\aoptions\CAN\ETX \SOH(\v2!.google.protobuf.EnumValueOptions\"\144\SOH\n\SYNServiceDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC26\n\ACKmethod\CAN\STX \ETX(\v2&.google.protobuf.MethodDescriptorProto\DC20\n\aoptions\CAN\ETX \SOH(\v2\US.google.protobuf.ServiceOptions\"\DEL\n\NAKMethodDescriptorProto\DC2\f\n\EOTname\CAN\SOH \SOH(\t\DC2\DC2\n\ninput_type\CAN\STX \SOH(\t\DC2\DC3\n\voutput_type\CAN\ETX \SOH(\t\DC2/\n\aoptions\CAN\EOT \SOH(\v2\RS.google.protobuf.MethodOptions\"\167\STX\n\vFileOptions\DC2\DC4\n\fjava_package\CAN\SOH \SOH(\t\DC2\FS\n\DC4java_outer_classname\CAN\b \SOH(\t\DC2\"\n\DC3java_multiple_files\CAN\n \SOH(\b:\ENQfalse\DC2F\n\foptimize_for\CAN\t \SOH(\SO2).google.protobuf.FileOptions.OptimizeMode:\ENQSPEED\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption\"(\n\fOptimizeMode\DC2\t\n\ENQSPEED\DLE\SOH\DC2\r\n\tCODE_SIZE\DLE\STX*\t\b\232\a\DLE\128\128\128\128\STX\"\136\SOH\n\SOMessageOptions\DC2&\n\ETBmessage_set_wire_format\CAN\SOH \SOH(\b:\ENQfalse\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"\128\STX\n\fFieldOptions\DC22\n\ENQctype\CAN\SOH \SOH(\SO2#.google.protobuf.FieldOptions.CType\DC2\SO\n\ACKpacked\CAN\STX \SOH(\b\DC2\EM\n\ndeprecated\CAN\ETX \SOH(\b:\ENQfalse\DC2\FS\n\DC4experimental_map_key\CAN\t \SOH(\t\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption\"#\n\ENQCType\DC2\b\n\EOTCORD\DLE\SOH\DC2\DLE\n\fSTRING_PIECE\DLE\STX*\t\b\232\a\DLE\128\128\128\128\STX\"]\n\vEnumOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"b\n\DLEEnumValueOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"`\n\SOServiceOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"_\n\rMethodOptions\DC2C\n\DC4uninterpreted_option\CAN\231\a \ETX(\v2$.google.protobuf.UninterpretedOption*\t\b\232\a\DLE\128\128\128\128\STX\"\133\STX\n\DC3UninterpretedOption\DC2;\n\EOTname\CAN\STX \ETX(\v2-.google.protobuf.UninterpretedOption.NamePart\DC2\CAN\n\DLEidentifier_value\CAN\ETX \SOH(\t\DC2\SUB\n\DC2positive_int_value\CAN\EOT \SOH(\EOT\DC2\SUB\n\DC2negative_int_value\CAN\ENQ \SOH(\ETX\DC2\DC4\n\fdouble_value\CAN\ACK \SOH(\SOH\DC2\DC4\n\fstring_value\CAN\a \SOH(\f\SUB3\n\bNamePart\DC2\DC1\n\tname_part\CAN\SOH \STX(\t\DC2\DC4\n\fis_extension\CAN\STX \STX(\bB)\n\DC3com.google.protobufB\DLEDescriptorProtosH\SOH")
diff --git a/src-auto-generated/Text/DescriptorProtos/DescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/DescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/DescriptorProto.hs
@@ -0,0 +1,96 @@
+module Text.DescriptorProtos.DescriptorProto (DescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as DescriptorProtos.DescriptorProto (ExtensionRange)
+import qualified Text.DescriptorProtos.EnumDescriptorProto as DescriptorProtos (EnumDescriptorProto)
+import qualified Text.DescriptorProtos.FieldDescriptorProto as DescriptorProtos (FieldDescriptorProto)
+import qualified Text.DescriptorProtos.MessageOptions as DescriptorProtos (MessageOptions)
+ 
+data DescriptorProto = DescriptorProto{name :: P'.Maybe P'.Utf8, field :: P'.Seq DescriptorProtos.FieldDescriptorProto,
+                                       extension :: P'.Seq DescriptorProtos.FieldDescriptorProto,
+                                       nested_type :: P'.Seq DescriptorProto,
+                                       enum_type :: P'.Seq DescriptorProtos.EnumDescriptorProto,
+                                       extension_range :: P'.Seq DescriptorProtos.DescriptorProto.ExtensionRange,
+                                       options :: P'.Maybe DescriptorProtos.MessageOptions, unknown'field :: P'.UnknownField}
+                     deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage DescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable DescriptorProto where
+  mergeEmpty
+   = DescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8) (DescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7 y'8)
+   = DescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+      (P'.mergeAppend x'8 y'8)
+ 
+instance P'.Default DescriptorProto where
+  defaultValue
+   = DescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+      P'.defaultValue
+ 
+instance P'.Wire DescriptorProto where
+  wireSize ft' self'@(DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeRep 1 11 x'3 + P'.wireSizeRep 1 11 x'4 +
+             P'.wireSizeRep 1 11 x'5
+             + P'.wireSizeRep 1 11 x'6
+             + P'.wireSizeOpt 1 11 x'7
+             + P'.wireSizeUnknownField x'8)
+  wirePut ft' self'@(DescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutRep 18 11 x'2
+             P'.wirePutRep 26 11 x'4
+             P'.wirePutRep 34 11 x'5
+             P'.wirePutRep 42 11 x'6
+             P'.wirePutRep 50 11 x'3
+             P'.wirePutOpt 58 11 x'7
+             P'.wirePutUnknownField x'8
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{field = P'.append (field old'Self) new'Field}) (P'.wireGet 11)
+             50 -> P'.fmap (\ new'Field -> old'Self{extension = P'.append (extension old'Self) new'Field}) (P'.wireGet 11)
+             26 -> P'.fmap (\ new'Field -> old'Self{nested_type = P'.append (nested_type old'Self) new'Field}) (P'.wireGet 11)
+             34 -> P'.fmap (\ new'Field -> old'Self{enum_type = P'.append (enum_type old'Self) new'Field}) (P'.wireGet 11)
+             42 -> P'.fmap (\ new'Field -> old'Self{extension_range = P'.append (extension_range old'Self) new'Field})
+                    (P'.wireGet 11)
+             58 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> DescriptorProto) DescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB DescriptorProto
+ 
+instance P'.ReflectDescriptor DescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34, 42, 50, 58])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.field\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"field\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.nested_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"nested_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.extension_range\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"extension_range\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs b/src-auto-generated/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/DescriptorProto/ExtensionRange.hs
@@ -0,0 +1,63 @@
+module Text.DescriptorProtos.DescriptorProto.ExtensionRange (ExtensionRange(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data ExtensionRange = ExtensionRange{start :: P'.Maybe P'.Int32, end :: P'.Maybe P'.Int32, unknown'field :: P'.UnknownField}
+                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage ExtensionRange where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable ExtensionRange where
+  mergeEmpty = ExtensionRange P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (ExtensionRange x'1 x'2 x'3) (ExtensionRange y'1 y'2 y'3)
+   = ExtensionRange (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default ExtensionRange where
+  defaultValue = ExtensionRange P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire ExtensionRange where
+  wireSize ft' self'@(ExtensionRange x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeOpt 1 5 x'1 + P'.wireSizeOpt 1 5 x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(ExtensionRange x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 8 5 x'1
+             P'.wirePutOpt 16 5 x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             8 -> P'.fmap (\ new'Field -> old'Self{start = P'.Just new'Field}) (P'.wireGet 5)
+             16 -> P'.fmap (\ new'Field -> old'Self{end = P'.Just new'Field}) (P'.wireGet 5)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> ExtensionRange) ExtensionRange where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB ExtensionRange
+ 
+instance P'.ReflectDescriptor ExtensionRange where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 16])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto.ExtensionRange\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"DescriptorProto\"], baseName = MName \"ExtensionRange\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"DescriptorProto\",\"ExtensionRange.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.start\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"start\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.DescriptorProto.ExtensionRange.end\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"DescriptorProto\",MName \"ExtensionRange\"], baseName' = FName \"end\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/EnumDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/EnumDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/EnumDescriptorProto.hs
@@ -0,0 +1,69 @@
+module Text.DescriptorProtos.EnumDescriptorProto (EnumDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.EnumOptions as DescriptorProtos (EnumOptions)
+import qualified Text.DescriptorProtos.EnumValueDescriptorProto as DescriptorProtos (EnumValueDescriptorProto)
+ 
+data EnumDescriptorProto = EnumDescriptorProto{name :: P'.Maybe P'.Utf8, value :: P'.Seq DescriptorProtos.EnumValueDescriptorProto,
+                                               options :: P'.Maybe DescriptorProtos.EnumOptions, unknown'field :: P'.UnknownField}
+                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage EnumDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable EnumDescriptorProto where
+  mergeEmpty = EnumDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (EnumDescriptorProto x'1 x'2 x'3 x'4) (EnumDescriptorProto y'1 y'2 y'3 y'4)
+   = EnumDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+ 
+instance P'.Default EnumDescriptorProto where
+  defaultValue = EnumDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire EnumDescriptorProto where
+  wireSize ft' self'@(EnumDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeOpt 1 11 x'3 + P'.wireSizeUnknownField x'4)
+  wirePut ft' self'@(EnumDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutRep 18 11 x'2
+             P'.wirePutOpt 26 11 x'3
+             P'.wirePutUnknownField x'4
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{value = P'.append (value old'Self) new'Field}) (P'.wireGet 11)
+             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> EnumDescriptorProto) EnumDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB EnumDescriptorProto
+ 
+instance P'.ReflectDescriptor EnumDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"value\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/EnumOptions.hs b/src-auto-generated/Text/DescriptorProtos/EnumOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/EnumOptions.hs
@@ -0,0 +1,72 @@
+module Text.DescriptorProtos.EnumOptions (EnumOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data EnumOptions = EnumOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                               unknown'field :: P'.UnknownField}
+                 deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage EnumOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage EnumOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable EnumOptions where
+  mergeEmpty = EnumOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (EnumOptions x'1 x'2 x'3) (EnumOptions y'1 y'2 y'3)
+   = EnumOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default EnumOptions where
+  defaultValue = EnumOptions P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire EnumOptions where
+  wireSize ft' self'@(EnumOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(EnumOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 7994 11 x'1
+             P'.wirePutExtField x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> EnumOptions) EnumOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB EnumOptions
+ 
+instance P'.ReflectDescriptor EnumOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/EnumValueDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/EnumValueDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/EnumValueDescriptorProto.hs
@@ -0,0 +1,69 @@
+module Text.DescriptorProtos.EnumValueDescriptorProto (EnumValueDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.EnumValueOptions as DescriptorProtos (EnumValueOptions)
+ 
+data EnumValueDescriptorProto = EnumValueDescriptorProto{name :: P'.Maybe P'.Utf8, number :: P'.Maybe P'.Int32,
+                                                         options :: P'.Maybe DescriptorProtos.EnumValueOptions,
+                                                         unknown'field :: P'.UnknownField}
+                              deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage EnumValueDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable EnumValueDescriptorProto where
+  mergeEmpty = EnumValueDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (EnumValueDescriptorProto x'1 x'2 x'3 x'4) (EnumValueDescriptorProto y'1 y'2 y'3 y'4)
+   = EnumValueDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+ 
+instance P'.Default EnumValueDescriptorProto where
+  defaultValue = EnumValueDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire EnumValueDescriptorProto where
+  wireSize ft' self'@(EnumValueDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 5 x'2 + P'.wireSizeOpt 1 11 x'3 + P'.wireSizeUnknownField x'4)
+  wirePut ft' self'@(EnumValueDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutOpt 16 5 x'2
+             P'.wirePutOpt 26 11 x'3
+             P'.wirePutUnknownField x'4
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             16 -> P'.fmap (\ new'Field -> old'Self{number = P'.Just new'Field}) (P'.wireGet 5)
+             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> EnumValueDescriptorProto) EnumValueDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB EnumValueDescriptorProto
+ 
+instance P'.ReflectDescriptor EnumValueDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 16, 26])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/EnumValueOptions.hs b/src-auto-generated/Text/DescriptorProtos/EnumValueOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/EnumValueOptions.hs
@@ -0,0 +1,72 @@
+module Text.DescriptorProtos.EnumValueOptions (EnumValueOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data EnumValueOptions = EnumValueOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption,
+                                         ext'field :: P'.ExtField, unknown'field :: P'.UnknownField}
+                      deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage EnumValueOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage EnumValueOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable EnumValueOptions where
+  mergeEmpty = EnumValueOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (EnumValueOptions x'1 x'2 x'3) (EnumValueOptions y'1 y'2 y'3)
+   = EnumValueOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default EnumValueOptions where
+  defaultValue = EnumValueOptions P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire EnumValueOptions where
+  wireSize ft' self'@(EnumValueOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(EnumValueOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 7994 11 x'1
+             P'.wirePutExtField x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> EnumValueOptions) EnumValueOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB EnumValueOptions
+ 
+instance P'.ReflectDescriptor EnumValueOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.EnumValueOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumValueOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"EnumValueOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.EnumValueOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"EnumValueOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto.hs
@@ -0,0 +1,103 @@
+module Text.DescriptorProtos.FieldDescriptorProto (FieldDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.FieldDescriptorProto.Label as DescriptorProtos.FieldDescriptorProto (Label)
+import qualified Text.DescriptorProtos.FieldDescriptorProto.Type as DescriptorProtos.FieldDescriptorProto (Type)
+import qualified Text.DescriptorProtos.FieldOptions as DescriptorProtos (FieldOptions)
+ 
+data FieldDescriptorProto = FieldDescriptorProto{name :: P'.Maybe P'.Utf8, number :: P'.Maybe P'.Int32,
+                                                 label :: P'.Maybe DescriptorProtos.FieldDescriptorProto.Label,
+                                                 type' :: P'.Maybe DescriptorProtos.FieldDescriptorProto.Type,
+                                                 type_name :: P'.Maybe P'.Utf8, extendee :: P'.Maybe P'.Utf8,
+                                                 default_value :: P'.Maybe P'.Utf8,
+                                                 options :: P'.Maybe DescriptorProtos.FieldOptions,
+                                                 unknown'field :: P'.UnknownField}
+                          deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage FieldDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable FieldDescriptorProto where
+  mergeEmpty
+   = FieldDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+      P'.mergeEmpty
+      P'.mergeEmpty
+  mergeAppend (FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9) (FieldDescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7 y'8 y'9)
+   = FieldDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+      (P'.mergeAppend x'8 y'8)
+      (P'.mergeAppend x'9 y'9)
+ 
+instance P'.Default FieldDescriptorProto where
+  defaultValue
+   = FieldDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+      P'.defaultValue
+      P'.defaultValue
+      P'.defaultValue
+ 
+instance P'.Wire FieldDescriptorProto where
+  wireSize ft' self'@(FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 5 x'2 + P'.wireSizeOpt 1 14 x'3 + P'.wireSizeOpt 1 14 x'4 +
+             P'.wireSizeOpt 1 9 x'5
+             + P'.wireSizeOpt 1 9 x'6
+             + P'.wireSizeOpt 1 9 x'7
+             + P'.wireSizeOpt 1 11 x'8
+             + P'.wireSizeUnknownField x'9)
+  wirePut ft' self'@(FieldDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutOpt 18 9 x'6
+             P'.wirePutOpt 24 5 x'2
+             P'.wirePutOpt 32 14 x'3
+             P'.wirePutOpt 40 14 x'4
+             P'.wirePutOpt 50 9 x'5
+             P'.wirePutOpt 58 9 x'7
+             P'.wirePutOpt 66 11 x'8
+             P'.wirePutUnknownField x'9
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             24 -> P'.fmap (\ new'Field -> old'Self{number = P'.Just new'Field}) (P'.wireGet 5)
+             32 -> P'.fmap (\ new'Field -> old'Self{label = P'.Just new'Field}) (P'.wireGet 14)
+             40 -> P'.fmap (\ new'Field -> old'Self{type' = P'.Just new'Field}) (P'.wireGet 14)
+             50 -> P'.fmap (\ new'Field -> old'Self{type_name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{extendee = P'.Just new'Field}) (P'.wireGet 9)
+             58 -> P'.fmap (\ new'Field -> old'Self{default_value = P'.Just new'Field}) (P'.wireGet 9)
+             66 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> FieldDescriptorProto) FieldDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB FieldDescriptorProto
+ 
+instance P'.ReflectDescriptor FieldDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 24, 32, 40, 50, 58, 66])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.number\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"number\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 5}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.label\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"label\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Label\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Label\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type'\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto.Type\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName = MName \"Type\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.type_name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"type_name\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.extendee\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"extendee\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.default_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"default_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Label.hs b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Label.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Label.hs
@@ -0,0 +1,61 @@
+module Text.DescriptorProtos.FieldDescriptorProto.Label (Label(..)) where
+import Prelude ((+), (.))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data Label = LABEL_OPTIONAL
+           | LABEL_REQUIRED
+           | LABEL_REPEATED
+           deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.Mergeable Label
+ 
+instance P'.Bounded Label where
+  minBound = LABEL_OPTIONAL
+  maxBound = LABEL_REPEATED
+ 
+instance P'.Default Label where
+  defaultValue = LABEL_OPTIONAL
+ 
+toMaybe'Enum :: P'.Int -> P'.Maybe Label
+toMaybe'Enum 1 = P'.Just LABEL_OPTIONAL
+toMaybe'Enum 2 = P'.Just LABEL_REQUIRED
+toMaybe'Enum 3 = P'.Just LABEL_REPEATED
+toMaybe'Enum _ = P'.Nothing
+ 
+instance P'.Enum Label where
+  fromEnum (LABEL_OPTIONAL) = 1
+  fromEnum (LABEL_REQUIRED) = 2
+  fromEnum (LABEL_REPEATED) = 3
+  toEnum
+   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldDescriptorProto.Label") .
+      toMaybe'Enum
+  succ (LABEL_OPTIONAL) = LABEL_REQUIRED
+  succ (LABEL_REQUIRED) = LABEL_REPEATED
+  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldDescriptorProto.Label"
+  pred (LABEL_REQUIRED) = LABEL_OPTIONAL
+  pred (LABEL_REPEATED) = LABEL_REQUIRED
+  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldDescriptorProto.Label"
+ 
+instance P'.Wire Label where
+  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
+  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
+  wireGet 14 = P'.wireGetEnum toMaybe'Enum
+  wireGet ft' = P'.wireGetErr ft'
+  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
+  wireGetPacked ft' = P'.wireGetErr ft'
+ 
+instance P'.GPB Label
+ 
+instance P'.MessageAPI msg' (msg' -> Label) Label where
+  getVal m' f' = f' m'
+ 
+instance P'.ReflectEnum Label where
+  reflectEnum
+   = [(1, "LABEL_OPTIONAL", LABEL_OPTIONAL), (2, "LABEL_REQUIRED", LABEL_REQUIRED), (3, "LABEL_REPEATED", LABEL_REPEATED)]
+  reflectEnumInfo _
+   = P'.EnumInfo
+      (P'.makePNF (P'.pack ".google.protobuf.FieldDescriptorProto.Label") ["Text"] ["DescriptorProtos", "FieldDescriptorProto"]
+        "Label")
+      ["Text", "DescriptorProtos", "FieldDescriptorProto", "Label.hs"]
+      [(1, "LABEL_OPTIONAL"), (2, "LABEL_REQUIRED"), (3, "LABEL_REPEATED")]
diff --git a/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Type.hs b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Type.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FieldDescriptorProto/Type.hs
@@ -0,0 +1,144 @@
+module Text.DescriptorProtos.FieldDescriptorProto.Type (Type(..)) where
+import Prelude ((+), (.))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data Type = TYPE_DOUBLE
+          | TYPE_FLOAT
+          | TYPE_INT64
+          | TYPE_UINT64
+          | TYPE_INT32
+          | TYPE_FIXED64
+          | TYPE_FIXED32
+          | TYPE_BOOL
+          | TYPE_STRING
+          | TYPE_GROUP
+          | TYPE_MESSAGE
+          | TYPE_BYTES
+          | TYPE_UINT32
+          | TYPE_ENUM
+          | TYPE_SFIXED32
+          | TYPE_SFIXED64
+          | TYPE_SINT32
+          | TYPE_SINT64
+          deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.Mergeable Type
+ 
+instance P'.Bounded Type where
+  minBound = TYPE_DOUBLE
+  maxBound = TYPE_SINT64
+ 
+instance P'.Default Type where
+  defaultValue = TYPE_DOUBLE
+ 
+toMaybe'Enum :: P'.Int -> P'.Maybe Type
+toMaybe'Enum 1 = P'.Just TYPE_DOUBLE
+toMaybe'Enum 2 = P'.Just TYPE_FLOAT
+toMaybe'Enum 3 = P'.Just TYPE_INT64
+toMaybe'Enum 4 = P'.Just TYPE_UINT64
+toMaybe'Enum 5 = P'.Just TYPE_INT32
+toMaybe'Enum 6 = P'.Just TYPE_FIXED64
+toMaybe'Enum 7 = P'.Just TYPE_FIXED32
+toMaybe'Enum 8 = P'.Just TYPE_BOOL
+toMaybe'Enum 9 = P'.Just TYPE_STRING
+toMaybe'Enum 10 = P'.Just TYPE_GROUP
+toMaybe'Enum 11 = P'.Just TYPE_MESSAGE
+toMaybe'Enum 12 = P'.Just TYPE_BYTES
+toMaybe'Enum 13 = P'.Just TYPE_UINT32
+toMaybe'Enum 14 = P'.Just TYPE_ENUM
+toMaybe'Enum 15 = P'.Just TYPE_SFIXED32
+toMaybe'Enum 16 = P'.Just TYPE_SFIXED64
+toMaybe'Enum 17 = P'.Just TYPE_SINT32
+toMaybe'Enum 18 = P'.Just TYPE_SINT64
+toMaybe'Enum _ = P'.Nothing
+ 
+instance P'.Enum Type where
+  fromEnum (TYPE_DOUBLE) = 1
+  fromEnum (TYPE_FLOAT) = 2
+  fromEnum (TYPE_INT64) = 3
+  fromEnum (TYPE_UINT64) = 4
+  fromEnum (TYPE_INT32) = 5
+  fromEnum (TYPE_FIXED64) = 6
+  fromEnum (TYPE_FIXED32) = 7
+  fromEnum (TYPE_BOOL) = 8
+  fromEnum (TYPE_STRING) = 9
+  fromEnum (TYPE_GROUP) = 10
+  fromEnum (TYPE_MESSAGE) = 11
+  fromEnum (TYPE_BYTES) = 12
+  fromEnum (TYPE_UINT32) = 13
+  fromEnum (TYPE_ENUM) = 14
+  fromEnum (TYPE_SFIXED32) = 15
+  fromEnum (TYPE_SFIXED64) = 16
+  fromEnum (TYPE_SINT32) = 17
+  fromEnum (TYPE_SINT64) = 18
+  toEnum
+   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldDescriptorProto.Type") .
+      toMaybe'Enum
+  succ (TYPE_DOUBLE) = TYPE_FLOAT
+  succ (TYPE_FLOAT) = TYPE_INT64
+  succ (TYPE_INT64) = TYPE_UINT64
+  succ (TYPE_UINT64) = TYPE_INT32
+  succ (TYPE_INT32) = TYPE_FIXED64
+  succ (TYPE_FIXED64) = TYPE_FIXED32
+  succ (TYPE_FIXED32) = TYPE_BOOL
+  succ (TYPE_BOOL) = TYPE_STRING
+  succ (TYPE_STRING) = TYPE_GROUP
+  succ (TYPE_GROUP) = TYPE_MESSAGE
+  succ (TYPE_MESSAGE) = TYPE_BYTES
+  succ (TYPE_BYTES) = TYPE_UINT32
+  succ (TYPE_UINT32) = TYPE_ENUM
+  succ (TYPE_ENUM) = TYPE_SFIXED32
+  succ (TYPE_SFIXED32) = TYPE_SFIXED64
+  succ (TYPE_SFIXED64) = TYPE_SINT32
+  succ (TYPE_SINT32) = TYPE_SINT64
+  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldDescriptorProto.Type"
+  pred (TYPE_FLOAT) = TYPE_DOUBLE
+  pred (TYPE_INT64) = TYPE_FLOAT
+  pred (TYPE_UINT64) = TYPE_INT64
+  pred (TYPE_INT32) = TYPE_UINT64
+  pred (TYPE_FIXED64) = TYPE_INT32
+  pred (TYPE_FIXED32) = TYPE_FIXED64
+  pred (TYPE_BOOL) = TYPE_FIXED32
+  pred (TYPE_STRING) = TYPE_BOOL
+  pred (TYPE_GROUP) = TYPE_STRING
+  pred (TYPE_MESSAGE) = TYPE_GROUP
+  pred (TYPE_BYTES) = TYPE_MESSAGE
+  pred (TYPE_UINT32) = TYPE_BYTES
+  pred (TYPE_ENUM) = TYPE_UINT32
+  pred (TYPE_SFIXED32) = TYPE_ENUM
+  pred (TYPE_SFIXED64) = TYPE_SFIXED32
+  pred (TYPE_SINT32) = TYPE_SFIXED64
+  pred (TYPE_SINT64) = TYPE_SINT32
+  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldDescriptorProto.Type"
+ 
+instance P'.Wire Type where
+  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
+  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
+  wireGet 14 = P'.wireGetEnum toMaybe'Enum
+  wireGet ft' = P'.wireGetErr ft'
+  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
+  wireGetPacked ft' = P'.wireGetErr ft'
+ 
+instance P'.GPB Type
+ 
+instance P'.MessageAPI msg' (msg' -> Type) Type where
+  getVal m' f' = f' m'
+ 
+instance P'.ReflectEnum Type where
+  reflectEnum
+   = [(1, "TYPE_DOUBLE", TYPE_DOUBLE), (2, "TYPE_FLOAT", TYPE_FLOAT), (3, "TYPE_INT64", TYPE_INT64),
+      (4, "TYPE_UINT64", TYPE_UINT64), (5, "TYPE_INT32", TYPE_INT32), (6, "TYPE_FIXED64", TYPE_FIXED64),
+      (7, "TYPE_FIXED32", TYPE_FIXED32), (8, "TYPE_BOOL", TYPE_BOOL), (9, "TYPE_STRING", TYPE_STRING),
+      (10, "TYPE_GROUP", TYPE_GROUP), (11, "TYPE_MESSAGE", TYPE_MESSAGE), (12, "TYPE_BYTES", TYPE_BYTES),
+      (13, "TYPE_UINT32", TYPE_UINT32), (14, "TYPE_ENUM", TYPE_ENUM), (15, "TYPE_SFIXED32", TYPE_SFIXED32),
+      (16, "TYPE_SFIXED64", TYPE_SFIXED64), (17, "TYPE_SINT32", TYPE_SINT32), (18, "TYPE_SINT64", TYPE_SINT64)]
+  reflectEnumInfo _
+   = P'.EnumInfo
+      (P'.makePNF (P'.pack ".google.protobuf.FieldDescriptorProto.Type") ["Text"] ["DescriptorProtos", "FieldDescriptorProto"]
+        "Type")
+      ["Text", "DescriptorProtos", "FieldDescriptorProto", "Type.hs"]
+      [(1, "TYPE_DOUBLE"), (2, "TYPE_FLOAT"), (3, "TYPE_INT64"), (4, "TYPE_UINT64"), (5, "TYPE_INT32"), (6, "TYPE_FIXED64"),
+       (7, "TYPE_FIXED32"), (8, "TYPE_BOOL"), (9, "TYPE_STRING"), (10, "TYPE_GROUP"), (11, "TYPE_MESSAGE"), (12, "TYPE_BYTES"),
+       (13, "TYPE_UINT32"), (14, "TYPE_ENUM"), (15, "TYPE_SFIXED32"), (16, "TYPE_SFIXED64"), (17, "TYPE_SINT32"),
+       (18, "TYPE_SINT64")]
diff --git a/src-auto-generated/Text/DescriptorProtos/FieldOptions.hs b/src-auto-generated/Text/DescriptorProtos/FieldOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FieldOptions.hs
@@ -0,0 +1,91 @@
+module Text.DescriptorProtos.FieldOptions (FieldOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.FieldOptions.CType as DescriptorProtos.FieldOptions (CType)
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data FieldOptions = FieldOptions{ctype :: P'.Maybe DescriptorProtos.FieldOptions.CType, packed :: P'.Maybe P'.Bool,
+                                 deprecated :: P'.Maybe P'.Bool, experimental_map_key :: P'.Maybe P'.Utf8,
+                                 uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                                 unknown'field :: P'.UnknownField}
+                  deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage FieldOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage FieldOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable FieldOptions where
+  mergeEmpty = FieldOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (FieldOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7) (FieldOptions y'1 y'2 y'3 y'4 y'5 y'6 y'7)
+   = FieldOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+ 
+instance P'.Default FieldOptions where
+  defaultValue
+   = FieldOptions P'.defaultValue P'.defaultValue (P'.Just P'.False) P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire FieldOptions where
+  wireSize ft' self'@(FieldOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 14 x'1 + P'.wireSizeOpt 1 8 x'2 + P'.wireSizeOpt 1 8 x'3 + P'.wireSizeOpt 1 9 x'4 +
+             P'.wireSizeRep 2 11 x'5
+             + P'.wireSizeExtField x'6
+             + P'.wireSizeUnknownField x'7)
+  wirePut ft' self'@(FieldOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 8 14 x'1
+             P'.wirePutOpt 16 8 x'2
+             P'.wirePutOpt 24 8 x'3
+             P'.wirePutOpt 74 9 x'4
+             P'.wirePutRep 7994 11 x'5
+             P'.wirePutExtField x'6
+             P'.wirePutUnknownField x'7
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             8 -> P'.fmap (\ new'Field -> old'Self{ctype = P'.Just new'Field}) (P'.wireGet 14)
+             16 -> P'.fmap (\ new'Field -> old'Self{packed = P'.Just new'Field}) (P'.wireGet 8)
+             24 -> P'.fmap (\ new'Field -> old'Self{deprecated = P'.Just new'Field}) (P'.wireGet 8)
+             74 -> P'.fmap (\ new'Field -> old'Self{experimental_map_key = P'.Just new'Field}) (P'.wireGet 9)
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> FieldOptions) FieldOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB FieldOptions
+ 
+instance P'.ReflectDescriptor FieldOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 16, 24, 74, 7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FieldOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FieldOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.ctype\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"ctype\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldOptions.CType\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName = MName \"CType\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.packed\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"packed\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.deprecated\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"deprecated\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 24}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.experimental_map_key\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"experimental_map_key\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 74}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FieldOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FieldOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FieldOptions/CType.hs b/src-auto-generated/Text/DescriptorProtos/FieldOptions/CType.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FieldOptions/CType.hs
@@ -0,0 +1,53 @@
+module Text.DescriptorProtos.FieldOptions.CType (CType(..)) where
+import Prelude ((+), (.))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data CType = CORD
+           | STRING_PIECE
+           deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.Mergeable CType
+ 
+instance P'.Bounded CType where
+  minBound = CORD
+  maxBound = STRING_PIECE
+ 
+instance P'.Default CType where
+  defaultValue = CORD
+ 
+toMaybe'Enum :: P'.Int -> P'.Maybe CType
+toMaybe'Enum 1 = P'.Just CORD
+toMaybe'Enum 2 = P'.Just STRING_PIECE
+toMaybe'Enum _ = P'.Nothing
+ 
+instance P'.Enum CType where
+  fromEnum (CORD) = 1
+  fromEnum (STRING_PIECE) = 2
+  toEnum
+   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FieldOptions.CType") .
+      toMaybe'Enum
+  succ (CORD) = STRING_PIECE
+  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FieldOptions.CType"
+  pred (STRING_PIECE) = CORD
+  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FieldOptions.CType"
+ 
+instance P'.Wire CType where
+  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
+  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
+  wireGet 14 = P'.wireGetEnum toMaybe'Enum
+  wireGet ft' = P'.wireGetErr ft'
+  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
+  wireGetPacked ft' = P'.wireGetErr ft'
+ 
+instance P'.GPB CType
+ 
+instance P'.MessageAPI msg' (msg' -> CType) CType where
+  getVal m' f' = f' m'
+ 
+instance P'.ReflectEnum CType where
+  reflectEnum = [(1, "CORD", CORD), (2, "STRING_PIECE", STRING_PIECE)]
+  reflectEnumInfo _
+   = P'.EnumInfo (P'.makePNF (P'.pack ".google.protobuf.FieldOptions.CType") ["Text"] ["DescriptorProtos", "FieldOptions"] "CType")
+      ["Text", "DescriptorProtos", "FieldOptions", "CType.hs"]
+      [(1, "CORD"), (2, "STRING_PIECE")]
diff --git a/src-auto-generated/Text/DescriptorProtos/FileDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/FileDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FileDescriptorProto.hs
@@ -0,0 +1,104 @@
+module Text.DescriptorProtos.FileDescriptorProto (FileDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.DescriptorProto as DescriptorProtos (DescriptorProto)
+import qualified Text.DescriptorProtos.EnumDescriptorProto as DescriptorProtos (EnumDescriptorProto)
+import qualified Text.DescriptorProtos.FieldDescriptorProto as DescriptorProtos (FieldDescriptorProto)
+import qualified Text.DescriptorProtos.FileOptions as DescriptorProtos (FileOptions)
+import qualified Text.DescriptorProtos.ServiceDescriptorProto as DescriptorProtos (ServiceDescriptorProto)
+ 
+data FileDescriptorProto = FileDescriptorProto{name :: P'.Maybe P'.Utf8, package :: P'.Maybe P'.Utf8, dependency :: P'.Seq P'.Utf8,
+                                               message_type :: P'.Seq DescriptorProtos.DescriptorProto,
+                                               enum_type :: P'.Seq DescriptorProtos.EnumDescriptorProto,
+                                               service :: P'.Seq DescriptorProtos.ServiceDescriptorProto,
+                                               extension :: P'.Seq DescriptorProtos.FieldDescriptorProto,
+                                               options :: P'.Maybe DescriptorProtos.FileOptions, unknown'field :: P'.UnknownField}
+                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage FileDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable FileDescriptorProto where
+  mergeEmpty
+   = FileDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+      P'.mergeEmpty
+      P'.mergeEmpty
+  mergeAppend (FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9) (FileDescriptorProto y'1 y'2 y'3 y'4 y'5 y'6 y'7 y'8 y'9)
+   = FileDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+      (P'.mergeAppend x'8 y'8)
+      (P'.mergeAppend x'9 y'9)
+ 
+instance P'.Default FileDescriptorProto where
+  defaultValue
+   = FileDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+      P'.defaultValue
+      P'.defaultValue
+      P'.defaultValue
+ 
+instance P'.Wire FileDescriptorProto where
+  wireSize ft' self'@(FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeRep 1 9 x'3 + P'.wireSizeRep 1 11 x'4 +
+             P'.wireSizeRep 1 11 x'5
+             + P'.wireSizeRep 1 11 x'6
+             + P'.wireSizeRep 1 11 x'7
+             + P'.wireSizeOpt 1 11 x'8
+             + P'.wireSizeUnknownField x'9)
+  wirePut ft' self'@(FileDescriptorProto x'1 x'2 x'3 x'4 x'5 x'6 x'7 x'8 x'9)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutOpt 18 9 x'2
+             P'.wirePutRep 26 9 x'3
+             P'.wirePutRep 34 11 x'4
+             P'.wirePutRep 42 11 x'5
+             P'.wirePutRep 50 11 x'6
+             P'.wirePutRep 58 11 x'7
+             P'.wirePutOpt 66 11 x'8
+             P'.wirePutUnknownField x'9
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{package = P'.Just new'Field}) (P'.wireGet 9)
+             26 -> P'.fmap (\ new'Field -> old'Self{dependency = P'.append (dependency old'Self) new'Field}) (P'.wireGet 9)
+             34 -> P'.fmap (\ new'Field -> old'Self{message_type = P'.append (message_type old'Self) new'Field}) (P'.wireGet 11)
+             42 -> P'.fmap (\ new'Field -> old'Self{enum_type = P'.append (enum_type old'Self) new'Field}) (P'.wireGet 11)
+             50 -> P'.fmap (\ new'Field -> old'Self{service = P'.append (service old'Self) new'Field}) (P'.wireGet 11)
+             58 -> P'.fmap (\ new'Field -> old'Self{extension = P'.append (extension old'Self) new'Field}) (P'.wireGet 11)
+             66 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> FileDescriptorProto) FileDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB FileDescriptorProto
+ 
+instance P'.ReflectDescriptor FileDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34, 42, 50, 58, 66])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"package\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.dependency\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"dependency\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.message_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"message_type\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.DescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"DescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.enum_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"enum_type\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 42}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.EnumDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"EnumDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.service\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"service\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 50}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"extension\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FieldDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FieldDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FileDescriptorSet.hs b/src-auto-generated/Text/DescriptorProtos/FileDescriptorSet.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FileDescriptorSet.hs
@@ -0,0 +1,62 @@
+module Text.DescriptorProtos.FileDescriptorSet (FileDescriptorSet(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.FileDescriptorProto as DescriptorProtos (FileDescriptorProto)
+ 
+data FileDescriptorSet = FileDescriptorSet{file :: P'.Seq DescriptorProtos.FileDescriptorProto, unknown'field :: P'.UnknownField}
+                       deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage FileDescriptorSet where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable FileDescriptorSet where
+  mergeEmpty = FileDescriptorSet P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (FileDescriptorSet x'1 x'2) (FileDescriptorSet y'1 y'2)
+   = FileDescriptorSet (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
+ 
+instance P'.Default FileDescriptorSet where
+  defaultValue = FileDescriptorSet P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire FileDescriptorSet where
+  wireSize ft' self'@(FileDescriptorSet x'1 x'2)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeRep 1 11 x'1 + P'.wireSizeUnknownField x'2)
+  wirePut ft' self'@(FileDescriptorSet x'1 x'2)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 10 11 x'1
+             P'.wirePutUnknownField x'2
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{file = P'.append (file old'Self) new'Field}) (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> FileDescriptorSet) FileDescriptorSet where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB FileDescriptorSet
+ 
+instance P'.ReflectDescriptor FileDescriptorSet where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorSet\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorSet\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileDescriptorSet.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileDescriptorSet.file\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileDescriptorSet\"], baseName' = FName \"file\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FileOptions.hs b/src-auto-generated/Text/DescriptorProtos/FileOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FileOptions.hs
@@ -0,0 +1,93 @@
+module Text.DescriptorProtos.FileOptions (FileOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.FileOptions.OptimizeMode as DescriptorProtos.FileOptions (OptimizeMode)
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data FileOptions = FileOptions{java_package :: P'.Maybe P'.Utf8, java_outer_classname :: P'.Maybe P'.Utf8,
+                               java_multiple_files :: P'.Maybe P'.Bool,
+                               optimize_for :: P'.Maybe DescriptorProtos.FileOptions.OptimizeMode,
+                               uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                               unknown'field :: P'.UnknownField}
+                 deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage FileOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage FileOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable FileOptions where
+  mergeEmpty = FileOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (FileOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7) (FileOptions y'1 y'2 y'3 y'4 y'5 y'6 y'7)
+   = FileOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+ 
+instance P'.Default FileOptions where
+  defaultValue
+   = FileOptions P'.defaultValue P'.defaultValue (P'.Just P'.False) (P'.Just (P'.read "SPEED")) P'.defaultValue P'.defaultValue
+      P'.defaultValue
+ 
+instance P'.Wire FileOptions where
+  wireSize ft' self'@(FileOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 8 x'3 + P'.wireSizeOpt 1 14 x'4 +
+             P'.wireSizeRep 2 11 x'5
+             + P'.wireSizeExtField x'6
+             + P'.wireSizeUnknownField x'7)
+  wirePut ft' self'@(FileOptions x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutOpt 66 9 x'2
+             P'.wirePutOpt 72 14 x'4
+             P'.wirePutOpt 80 8 x'3
+             P'.wirePutRep 7994 11 x'5
+             P'.wirePutExtField x'6
+             P'.wirePutUnknownField x'7
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{java_package = P'.Just new'Field}) (P'.wireGet 9)
+             66 -> P'.fmap (\ new'Field -> old'Self{java_outer_classname = P'.Just new'Field}) (P'.wireGet 9)
+             80 -> P'.fmap (\ new'Field -> old'Self{java_multiple_files = P'.Just new'Field}) (P'.wireGet 8)
+             72 -> P'.fmap (\ new'Field -> old'Self{optimize_for = P'.Just new'Field}) (P'.wireGet 14)
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> FileOptions) FileOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB FileOptions
+ 
+instance P'.ReflectDescriptor FileOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 66, 72, 80, 7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.FileOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"FileOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"FileOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_package\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_package\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_outer_classname\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_outer_classname\"}, fieldNumber = FieldId {getFieldId = 8}, wireTag = WireTag {getWireTag = 66}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.java_multiple_files\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"java_multiple_files\"}, fieldNumber = FieldId {getFieldId = 10}, wireTag = WireTag {getWireTag = 80}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.optimize_for\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"optimize_for\"}, fieldNumber = FieldId {getFieldId = 9}, wireTag = WireTag {getWireTag = 72}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.FileOptions.OptimizeMode\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName = MName \"OptimizeMode\"}), hsRawDefault = Just (Chunk \"SPEED\" Empty), hsDefault = Just (HsDef'Enum \"SPEED\")},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.FileOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"FileOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/FileOptions/OptimizeMode.hs b/src-auto-generated/Text/DescriptorProtos/FileOptions/OptimizeMode.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/FileOptions/OptimizeMode.hs
@@ -0,0 +1,54 @@
+module Text.DescriptorProtos.FileOptions.OptimizeMode (OptimizeMode(..)) where
+import Prelude ((+), (.))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data OptimizeMode = SPEED
+                  | CODE_SIZE
+                  deriving (P'.Read, P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.Mergeable OptimizeMode
+ 
+instance P'.Bounded OptimizeMode where
+  minBound = SPEED
+  maxBound = CODE_SIZE
+ 
+instance P'.Default OptimizeMode where
+  defaultValue = SPEED
+ 
+toMaybe'Enum :: P'.Int -> P'.Maybe OptimizeMode
+toMaybe'Enum 1 = P'.Just SPEED
+toMaybe'Enum 2 = P'.Just CODE_SIZE
+toMaybe'Enum _ = P'.Nothing
+ 
+instance P'.Enum OptimizeMode where
+  fromEnum (SPEED) = 1
+  fromEnum (CODE_SIZE) = 2
+  toEnum
+   = P'.fromMaybe (P'.error "hprotoc generated code: toEnum failure for type Text.DescriptorProtos.FileOptions.OptimizeMode") .
+      toMaybe'Enum
+  succ (SPEED) = CODE_SIZE
+  succ _ = P'.error "hprotoc generated code: succ failure for type Text.DescriptorProtos.FileOptions.OptimizeMode"
+  pred (CODE_SIZE) = SPEED
+  pred _ = P'.error "hprotoc generated code: pred failure for type Text.DescriptorProtos.FileOptions.OptimizeMode"
+ 
+instance P'.Wire OptimizeMode where
+  wireSize ft' enum = P'.wireSize ft' (P'.fromEnum enum)
+  wirePut ft' enum = P'.wirePut ft' (P'.fromEnum enum)
+  wireGet 14 = P'.wireGetEnum toMaybe'Enum
+  wireGet ft' = P'.wireGetErr ft'
+  wireGetPacked 14 = P'.wireGetPackedEnum toMaybe'Enum
+  wireGetPacked ft' = P'.wireGetErr ft'
+ 
+instance P'.GPB OptimizeMode
+ 
+instance P'.MessageAPI msg' (msg' -> OptimizeMode) OptimizeMode where
+  getVal m' f' = f' m'
+ 
+instance P'.ReflectEnum OptimizeMode where
+  reflectEnum = [(1, "SPEED", SPEED), (2, "CODE_SIZE", CODE_SIZE)]
+  reflectEnumInfo _
+   = P'.EnumInfo
+      (P'.makePNF (P'.pack ".google.protobuf.FileOptions.OptimizeMode") ["Text"] ["DescriptorProtos", "FileOptions"] "OptimizeMode")
+      ["Text", "DescriptorProtos", "FileOptions", "OptimizeMode.hs"]
+      [(1, "SPEED"), (2, "CODE_SIZE")]
diff --git a/src-auto-generated/Text/DescriptorProtos/MessageOptions.hs b/src-auto-generated/Text/DescriptorProtos/MessageOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/MessageOptions.hs
@@ -0,0 +1,75 @@
+module Text.DescriptorProtos.MessageOptions (MessageOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data MessageOptions = MessageOptions{message_set_wire_format :: P'.Maybe P'.Bool,
+                                     uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                                     unknown'field :: P'.UnknownField}
+                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage MessageOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage MessageOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable MessageOptions where
+  mergeEmpty = MessageOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (MessageOptions x'1 x'2 x'3 x'4) (MessageOptions y'1 y'2 y'3 y'4)
+   = MessageOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+ 
+instance P'.Default MessageOptions where
+  defaultValue = MessageOptions (P'.Just P'.False) P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire MessageOptions where
+  wireSize ft' self'@(MessageOptions x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeOpt 1 8 x'1 + P'.wireSizeRep 2 11 x'2 + P'.wireSizeExtField x'3 + P'.wireSizeUnknownField x'4)
+  wirePut ft' self'@(MessageOptions x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 8 8 x'1
+             P'.wirePutRep 7994 11 x'2
+             P'.wirePutExtField x'3
+             P'.wirePutUnknownField x'4
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             8 -> P'.fmap (\ new'Field -> old'Self{message_set_wire_format = P'.Just new'Field}) (P'.wireGet 8)
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> MessageOptions) MessageOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB MessageOptions
+ 
+instance P'.ReflectDescriptor MessageOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [8, 7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MessageOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MessageOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MessageOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.message_set_wire_format\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"message_set_wire_format\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 8}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Just (Chunk \"false\" Empty), hsDefault = Just (HsDef'Bool False)},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MessageOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MessageOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/MethodDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/MethodDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/MethodDescriptorProto.hs
@@ -0,0 +1,75 @@
+module Text.DescriptorProtos.MethodDescriptorProto (MethodDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.MethodOptions as DescriptorProtos (MethodOptions)
+ 
+data MethodDescriptorProto = MethodDescriptorProto{name :: P'.Maybe P'.Utf8, input_type :: P'.Maybe P'.Utf8,
+                                                   output_type :: P'.Maybe P'.Utf8,
+                                                   options :: P'.Maybe DescriptorProtos.MethodOptions,
+                                                   unknown'field :: P'.UnknownField}
+                           deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage MethodDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable MethodDescriptorProto where
+  mergeEmpty = MethodDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (MethodDescriptorProto x'1 x'2 x'3 x'4 x'5) (MethodDescriptorProto y'1 y'2 y'3 y'4 y'5)
+   = MethodDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+ 
+instance P'.Default MethodDescriptorProto where
+  defaultValue = MethodDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire MethodDescriptorProto where
+  wireSize ft' self'@(MethodDescriptorProto x'1 x'2 x'3 x'4 x'5)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 9 x'3 + P'.wireSizeOpt 1 11 x'4 +
+             P'.wireSizeUnknownField x'5)
+  wirePut ft' self'@(MethodDescriptorProto x'1 x'2 x'3 x'4 x'5)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutOpt 18 9 x'2
+             P'.wirePutOpt 26 9 x'3
+             P'.wirePutOpt 34 11 x'4
+             P'.wirePutUnknownField x'5
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{input_type = P'.Just new'Field}) (P'.wireGet 9)
+             26 -> P'.fmap (\ new'Field -> old'Self{output_type = P'.Just new'Field}) (P'.wireGet 9)
+             34 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> MethodDescriptorProto) MethodDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB MethodDescriptorProto
+ 
+instance P'.ReflectDescriptor MethodDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26, 34])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.input_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"input_type\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.output_type\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"output_type\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 34}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/MethodOptions.hs b/src-auto-generated/Text/DescriptorProtos/MethodOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/MethodOptions.hs
@@ -0,0 +1,72 @@
+module Text.DescriptorProtos.MethodOptions (MethodOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data MethodOptions = MethodOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                                   unknown'field :: P'.UnknownField}
+                   deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage MethodOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage MethodOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable MethodOptions where
+  mergeEmpty = MethodOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (MethodOptions x'1 x'2 x'3) (MethodOptions y'1 y'2 y'3)
+   = MethodOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default MethodOptions where
+  defaultValue = MethodOptions P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire MethodOptions where
+  wireSize ft' self'@(MethodOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(MethodOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 7994 11 x'1
+             P'.wirePutExtField x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> MethodOptions) MethodOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB MethodOptions
+ 
+instance P'.ReflectDescriptor MethodOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.MethodOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"MethodOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.MethodOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"MethodOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/ServiceDescriptorProto.hs b/src-auto-generated/Text/DescriptorProtos/ServiceDescriptorProto.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/ServiceDescriptorProto.hs
@@ -0,0 +1,71 @@
+module Text.DescriptorProtos.ServiceDescriptorProto (ServiceDescriptorProto(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.MethodDescriptorProto as DescriptorProtos (MethodDescriptorProto)
+import qualified Text.DescriptorProtos.ServiceOptions as DescriptorProtos (ServiceOptions)
+ 
+data ServiceDescriptorProto = ServiceDescriptorProto{name :: P'.Maybe P'.Utf8,
+                                                     method :: P'.Seq DescriptorProtos.MethodDescriptorProto,
+                                                     options :: P'.Maybe DescriptorProtos.ServiceOptions,
+                                                     unknown'field :: P'.UnknownField}
+                            deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage ServiceDescriptorProto where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable ServiceDescriptorProto where
+  mergeEmpty = ServiceDescriptorProto P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (ServiceDescriptorProto x'1 x'2 x'3 x'4) (ServiceDescriptorProto y'1 y'2 y'3 y'4)
+   = ServiceDescriptorProto (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+ 
+instance P'.Default ServiceDescriptorProto where
+  defaultValue = ServiceDescriptorProto P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire ServiceDescriptorProto where
+  wireSize ft' self'@(ServiceDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeOpt 1 9 x'1 + P'.wireSizeRep 1 11 x'2 + P'.wireSizeOpt 1 11 x'3 + P'.wireSizeUnknownField x'4)
+  wirePut ft' self'@(ServiceDescriptorProto x'1 x'2 x'3 x'4)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutOpt 10 9 x'1
+             P'.wirePutRep 18 11 x'2
+             P'.wirePutOpt 26 11 x'3
+             P'.wirePutUnknownField x'4
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name = P'.Just new'Field}) (P'.wireGet 9)
+             18 -> P'.fmap (\ new'Field -> old'Self{method = P'.append (method old'Self) new'Field}) (P'.wireGet 11)
+             26 -> P'.fmap (\ new'Field -> old'Self{options = P'.mergeAppend (options old'Self) (P'.Just new'Field)})
+                    (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> ServiceDescriptorProto) ServiceDescriptorProto where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB ServiceDescriptorProto
+ 
+instance P'.ReflectDescriptor ServiceDescriptorProto where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 18, 26])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceDescriptorProto\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceDescriptorProto.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.method\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"method\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.MethodDescriptorProto\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"MethodDescriptorProto\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceDescriptorProto.options\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceDescriptorProto\"], baseName' = FName \"options\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/ServiceOptions.hs b/src-auto-generated/Text/DescriptorProtos/ServiceOptions.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/ServiceOptions.hs
@@ -0,0 +1,72 @@
+module Text.DescriptorProtos.ServiceOptions (ServiceOptions(..)) where
+import Prelude ((+), (==), (<=), (&&))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption as DescriptorProtos (UninterpretedOption)
+ 
+data ServiceOptions = ServiceOptions{uninterpreted_option :: P'.Seq DescriptorProtos.UninterpretedOption, ext'field :: P'.ExtField,
+                                     unknown'field :: P'.UnknownField}
+                    deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.ExtendMessage ServiceOptions where
+  getExtField = ext'field
+  putExtField e'f msg = msg{ext'field = e'f}
+  validExtRanges msg = P'.extRanges (P'.reflectDescriptorInfo msg)
+ 
+instance P'.UnknownMessage ServiceOptions where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable ServiceOptions where
+  mergeEmpty = ServiceOptions P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (ServiceOptions x'1 x'2 x'3) (ServiceOptions y'1 y'2 y'3)
+   = ServiceOptions (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default ServiceOptions where
+  defaultValue = ServiceOptions P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire ServiceOptions where
+  wireSize ft' self'@(ServiceOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeRep 2 11 x'1 + P'.wireSizeExtField x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(ServiceOptions x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 7994 11 x'1
+             P'.wirePutExtField x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             7994 -> P'.fmap (\ new'Field -> old'Self{uninterpreted_option = P'.append (uninterpreted_option old'Self) new'Field})
+                      (P'.wireGet 11)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in
+                   if P'.or [1000 <= field'Number && field'Number <= 18999, 20000 <= field'Number] then
+                    P'.loadExtension field'Number wire'Type old'Self else P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> ServiceOptions) ServiceOptions where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB ServiceOptions
+ 
+instance P'.ReflectDescriptor ServiceOptions where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [7994])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.ServiceOptions\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"ServiceOptions\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"ServiceOptions.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.ServiceOptions.uninterpreted_option\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"ServiceOptions\"], baseName' = FName \"uninterpreted_option\"}, fieldNumber = FieldId {getFieldId = 999}, wireTag = WireTag {getWireTag = 7994}, packedTag = Nothing, wireTagLength = 2, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}), hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [(FieldId {getFieldId = 1000},FieldId {getFieldId = 18999}),(FieldId {getFieldId = 20000},FieldId {getFieldId = 536870911})], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/UninterpretedOption.hs b/src-auto-generated/Text/DescriptorProtos/UninterpretedOption.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/UninterpretedOption.hs
@@ -0,0 +1,84 @@
+module Text.DescriptorProtos.UninterpretedOption (UninterpretedOption(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+import qualified Text.DescriptorProtos.UninterpretedOption.NamePart as DescriptorProtos.UninterpretedOption (NamePart)
+ 
+data UninterpretedOption = UninterpretedOption{name :: P'.Seq DescriptorProtos.UninterpretedOption.NamePart,
+                                               identifier_value :: P'.Maybe P'.Utf8, positive_int_value :: P'.Maybe P'.Word64,
+                                               negative_int_value :: P'.Maybe P'.Int64, double_value :: P'.Maybe P'.Double,
+                                               string_value :: P'.Maybe P'.ByteString, unknown'field :: P'.UnknownField}
+                         deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage UninterpretedOption where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable UninterpretedOption where
+  mergeEmpty = UninterpretedOption P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6 x'7) (UninterpretedOption y'1 y'2 y'3 y'4 y'5 y'6 y'7)
+   = UninterpretedOption (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3) (P'.mergeAppend x'4 y'4)
+      (P'.mergeAppend x'5 y'5)
+      (P'.mergeAppend x'6 y'6)
+      (P'.mergeAppend x'7 y'7)
+ 
+instance P'.Default UninterpretedOption where
+  defaultValue
+   = UninterpretedOption P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue P'.defaultValue
+      P'.defaultValue
+ 
+instance P'.Wire UninterpretedOption where
+  wireSize ft' self'@(UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size
+         = (P'.wireSizeRep 1 11 x'1 + P'.wireSizeOpt 1 9 x'2 + P'.wireSizeOpt 1 4 x'3 + P'.wireSizeOpt 1 3 x'4 +
+             P'.wireSizeOpt 1 1 x'5
+             + P'.wireSizeOpt 1 12 x'6
+             + P'.wireSizeUnknownField x'7)
+  wirePut ft' self'@(UninterpretedOption x'1 x'2 x'3 x'4 x'5 x'6 x'7)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutRep 18 11 x'1
+             P'.wirePutOpt 26 9 x'2
+             P'.wirePutOpt 32 4 x'3
+             P'.wirePutOpt 40 3 x'4
+             P'.wirePutOpt 49 1 x'5
+             P'.wirePutOpt 58 12 x'6
+             P'.wirePutUnknownField x'7
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             18 -> P'.fmap (\ new'Field -> old'Self{name = P'.append (name old'Self) new'Field}) (P'.wireGet 11)
+             26 -> P'.fmap (\ new'Field -> old'Self{identifier_value = P'.Just new'Field}) (P'.wireGet 9)
+             32 -> P'.fmap (\ new'Field -> old'Self{positive_int_value = P'.Just new'Field}) (P'.wireGet 4)
+             40 -> P'.fmap (\ new'Field -> old'Self{negative_int_value = P'.Just new'Field}) (P'.wireGet 3)
+             49 -> P'.fmap (\ new'Field -> old'Self{double_value = P'.Just new'Field}) (P'.wireGet 1)
+             58 -> P'.fmap (\ new'Field -> old'Self{string_value = P'.Just new'Field}) (P'.wireGet 12)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> UninterpretedOption) UninterpretedOption where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB UninterpretedOption
+ 
+instance P'.ReflectDescriptor UninterpretedOption where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [18, 26, 32, 40, 49, 58])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\"], baseName = MName \"UninterpretedOption\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.name\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"name\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 18}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.identifier_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"identifier_value\"}, fieldNumber = FieldId {getFieldId = 3}, wireTag = WireTag {getWireTag = 26}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.positive_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"positive_int_value\"}, fieldNumber = FieldId {getFieldId = 4}, wireTag = WireTag {getWireTag = 32}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 4}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.negative_int_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"negative_int_value\"}, fieldNumber = FieldId {getFieldId = 5}, wireTag = WireTag {getWireTag = 40}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 3}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.double_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"double_value\"}, fieldNumber = FieldId {getFieldId = 6}, wireTag = WireTag {getWireTag = 49}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 1}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.string_value\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName' = FName \"string_value\"}, fieldNumber = FieldId {getFieldId = 7}, wireTag = WireTag {getWireTag = 58}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 12}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-auto-generated/Text/DescriptorProtos/UninterpretedOption/NamePart.hs b/src-auto-generated/Text/DescriptorProtos/UninterpretedOption/NamePart.hs
new file mode 100644
--- /dev/null
+++ b/src-auto-generated/Text/DescriptorProtos/UninterpretedOption/NamePart.hs
@@ -0,0 +1,63 @@
+module Text.DescriptorProtos.UninterpretedOption.NamePart (NamePart(..)) where
+import Prelude ((+))
+import qualified Prelude as P'
+import qualified Text.ProtocolBuffers.Header as P'
+ 
+data NamePart = NamePart{name_part :: P'.Utf8, is_extension :: P'.Bool, unknown'field :: P'.UnknownField}
+              deriving (P'.Show, P'.Eq, P'.Ord, P'.Typeable)
+ 
+instance P'.UnknownMessage NamePart where
+  getUnknownField = unknown'field
+  putUnknownField u'f msg = msg{unknown'field = u'f}
+ 
+instance P'.Mergeable NamePart where
+  mergeEmpty = NamePart P'.mergeEmpty P'.mergeEmpty P'.mergeEmpty
+  mergeAppend (NamePart x'1 x'2 x'3) (NamePart y'1 y'2 y'3)
+   = NamePart (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2) (P'.mergeAppend x'3 y'3)
+ 
+instance P'.Default NamePart where
+  defaultValue = NamePart P'.defaultValue P'.defaultValue P'.defaultValue
+ 
+instance P'.Wire NamePart where
+  wireSize ft' self'@(NamePart x'1 x'2 x'3)
+   = case ft' of
+       10 -> calc'Size
+       11 -> P'.prependMessageSize calc'Size
+       _ -> P'.wireSizeErr ft' self'
+    where
+        calc'Size = (P'.wireSizeReq 1 9 x'1 + P'.wireSizeReq 1 8 x'2 + P'.wireSizeUnknownField x'3)
+  wirePut ft' self'@(NamePart x'1 x'2 x'3)
+   = case ft' of
+       10 -> put'Fields
+       11 -> do
+               P'.putSize (P'.wireSize 10 self')
+               put'Fields
+       _ -> P'.wirePutErr ft' self'
+    where
+        put'Fields
+         = do
+             P'.wirePutReq 10 9 x'1
+             P'.wirePutReq 16 8 x'2
+             P'.wirePutUnknownField x'3
+  wireGet ft'
+   = case ft' of
+       10 -> P'.getBareMessageWith (P'.catch'Unknown update'Self)
+       11 -> P'.getMessageWith (P'.catch'Unknown update'Self)
+       _ -> P'.wireGetErr ft'
+    where
+        update'Self wire'Tag old'Self
+         = case wire'Tag of
+             10 -> P'.fmap (\ new'Field -> old'Self{name_part = new'Field}) (P'.wireGet 9)
+             16 -> P'.fmap (\ new'Field -> old'Self{is_extension = new'Field}) (P'.wireGet 8)
+             _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
+ 
+instance P'.MessageAPI msg' (msg' -> NamePart) NamePart where
+  getVal m' f' = f' m'
+ 
+instance P'.GPB NamePart
+ 
+instance P'.ReflectDescriptor NamePart where
+  getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList [10, 16]) (P'.fromDistinctAscList [10, 16])
+  reflectDescriptorInfo _
+   = P'.read
+      "DescriptorInfo {descName = ProtoName {protobufName = FIName \".google.protobuf.UninterpretedOption.NamePart\", haskellPrefix = [MName \"Text\"], parentModule = [MName \"DescriptorProtos\",MName \"UninterpretedOption\"], baseName = MName \"NamePart\"}, descFilePath = [\"Text\",\"DescriptorProtos\",\"UninterpretedOption\",\"NamePart.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.name_part\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"name_part\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 9}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".google.protobuf.UninterpretedOption.NamePart.is_extension\", haskellPrefix' = [MName \"Text\"], parentModule' = [MName \"DescriptorProtos\",MName \"UninterpretedOption\",MName \"NamePart\"], baseName' = FName \"is_extension\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = True, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 8}, typeName = Nothing, hsRawDefault = Nothing, hsDefault = Nothing}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = True}"
diff --git a/src-hand-written/Text/DescriptorProtos/Options.hs b/src-hand-written/Text/DescriptorProtos/Options.hs
new file mode 100644
--- /dev/null
+++ b/src-hand-written/Text/DescriptorProtos/Options.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, FunctionalDependencies, FlexibleContexts #-}
+{-| This module provides a less verbose API for accessing the options
+    of the various descriptor messages types.  There are seven
+    different option types.  The EnumValueOptions are not currently
+    settable in the proto file.  To access extension keys the
+    descendKey functions are provided as the descend functions ignore
+    them.  The 'toDP', 'toEP', 'toSP' are type-specific descents that
+    are demonstrated in the the tests below.  They are useful in that
+    they provide more information for the type-checker.  The 'toFP',
+    'toEVP', and 'toMP' are fully type-specific descents but are
+    needed to make the tests below type-check, though they could have
+    been used in 'test4', test5', and 'test7'.
+
+> import Text.DescriptorProtos.Options
+> import Text.DescriptorProtos(fileDescriptorProto)
+> 
+> test1 :: D.FileOptions
+> test1 = options fileDescriptorProto
+> 
+> test2 :: Maybe D.MessageOptions
+> test2 = return fileDescriptorProto >>= descend "FieldDescriptorProto" >>= return . options
+> 
+> test3 :: Maybe D.EnumOptions
+> test3 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= descend "Type" >>= return . options
+> 
+> test4 :: Maybe D.EnumValueOptions
+> test4 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= toEP "Type" >>= descend "TYPE_DOUBLE" >>= return . options
+> 
+> test5 :: Maybe D.FieldOptions
+> test5 = return fileDescriptorProto >>= toDP "DescriptorProto" >>= toDP "ExtensionRange" >>= descend "start" >>= return . options
+> 
+> test6 :: Maybe D.ServiceOptions
+> test6 = return fileDescriptorProto >>= descend "ImaginaryService" >>= return . options
+> 
+> test7 :: Maybe D.MethodOptions
+> test7 = return fileDescriptorProto >>= toSP "ImaginaryService" >>= descend "ImaginaryMethod" >>= return . options
+-}
+module Text.DescriptorProtos.Options(name,options,descend',descend,descendKey',descendKey
+                                    ,toDP,toEP,toSP,toFP,toEVP,toMP
+                                    ,NameAndOptions,DescendClass,DescendKey
+                                    ,D.FileDescriptorProto,D.DescriptorProto,D.EnumDescriptorProto
+                                    ,D.EnumValueDescriptorProto,D.FieldDescriptorProto
+                                    ,D.ServiceDescriptorProto,D.MethodDescriptorProto
+                                    ,D.EnumOptions,D.EnumValueOptions,D.FieldOptions
+                                    ,D.FileOptions,D.MessageOptions,D.MethodOptions,D.ServiceOptions) where
+
+import qualified Text.DescriptorProtos.DescriptorProto                as D(DescriptorProto)
+import qualified Text.DescriptorProtos.DescriptorProto                as D.DescriptorProto(DescriptorProto(..))
+import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as D(ExtensionRange(ExtensionRange))
+import qualified Text.DescriptorProtos.DescriptorProto.ExtensionRange as D.ExtensionRange(ExtensionRange(..))
+import qualified Text.DescriptorProtos.EnumDescriptorProto            as D(EnumDescriptorProto(EnumDescriptorProto))
+import qualified Text.DescriptorProtos.EnumDescriptorProto            as D.EnumDescriptorProto(EnumDescriptorProto(..))
+import qualified Text.DescriptorProtos.EnumValueDescriptorProto       as D(EnumValueDescriptorProto)
+import qualified Text.DescriptorProtos.EnumValueDescriptorProto       as D.EnumValueDescriptorProto(EnumValueDescriptorProto(..))
+import qualified Text.DescriptorProtos.FieldDescriptorProto           as D(FieldDescriptorProto)
+import qualified Text.DescriptorProtos.FieldDescriptorProto           as D.FieldDescriptorProto(FieldDescriptorProto(..))
+import qualified Text.DescriptorProtos.FieldDescriptorProto.Type      as D(Type)
+import           Text.DescriptorProtos.FieldDescriptorProto.Type      as D.Type(Type(..))
+import qualified Text.DescriptorProtos.FileDescriptorProto            as D(FileDescriptorProto)
+import qualified Text.DescriptorProtos.FileDescriptorProto            as D.FileDescriptorProto(FileDescriptorProto(..))
+import qualified Text.DescriptorProtos.MethodDescriptorProto          as D(MethodDescriptorProto)
+import qualified Text.DescriptorProtos.MethodDescriptorProto          as D.MethodDescriptorProto(MethodDescriptorProto(..))
+import qualified Text.DescriptorProtos.ServiceDescriptorProto         as D(ServiceDescriptorProto)
+import qualified Text.DescriptorProtos.ServiceDescriptorProto         as D.ServiceDescriptorProto(ServiceDescriptorProto(..))
+import qualified Text.DescriptorProtos.UninterpretedOption            as D(UninterpretedOption)
+import qualified Text.DescriptorProtos.UninterpretedOption            as D.UninterpretedOption(UninterpretedOption(..))
+import qualified Text.DescriptorProtos.UninterpretedOption.NamePart   as D(NamePart(NamePart))
+import qualified Text.DescriptorProtos.UninterpretedOption.NamePart   as D.NamePart(NamePart(..))
+import qualified Text.DescriptorProtos.EnumOptions      as D(EnumOptions)
+import qualified Text.DescriptorProtos.EnumOptions      as D.EnumOptions(EnumOptions(..))
+import qualified Text.DescriptorProtos.EnumValueOptions as D(EnumValueOptions)
+import qualified Text.DescriptorProtos.EnumValueOptions as D.EnumValueOptions(EnumValueOptions(..))
+import qualified Text.DescriptorProtos.FieldOptions     as D(FieldOptions)
+import qualified Text.DescriptorProtos.FieldOptions     as D.FieldOptions(FieldOptions(..))
+import qualified Text.DescriptorProtos.FileOptions      as D(FileOptions)
+import qualified Text.DescriptorProtos.FileOptions      as D.FileOptions(FileOptions(..))
+import qualified Text.DescriptorProtos.MessageOptions   as D(MessageOptions)
+import qualified Text.DescriptorProtos.MessageOptions   as D.MessageOptions(MessageOptions(..))
+import qualified Text.DescriptorProtos.MethodOptions    as D(MethodOptions)
+import qualified Text.DescriptorProtos.MethodOptions    as D.MethodOptions(MethodOptions(..))
+import qualified Text.DescriptorProtos.ServiceOptions   as D(ServiceOptions)
+import qualified Text.DescriptorProtos.ServiceOptions   as D.ServiceOptions(ServiceOptions(..))
+
+import Text.DescriptorProtos(fileDescriptorProto) -- for testing
+
+import Data.Maybe(listToMaybe)
+import Text.ProtocolBuffers(fromString,Utf8,getVal,Seq)
+import qualified Data.Foldable as F(toList)
+
+class DescendClass a c where
+  descend' :: a -> Utf8 -> (Maybe c)
+
+descend :: DescendClass a c => String -> a -> Maybe c
+descend = flip descend' . fromString
+
+class DescendKey a where
+  descendKey' :: a -> Utf8 -> Maybe D.FieldDescriptorProto
+
+descendKey :: DescendKey a => String -> a -> Maybe D.FieldDescriptorProto
+descendKey = flip descendKey' . fromString
+
+class NameAndOptions a opt | a -> opt, opt -> a where
+  name :: a -> Utf8
+  options :: a -> opt
+
+-- helper
+search :: (NameAndOptions a b) => Seq a -> Utf8 -> Maybe a
+search s n = listToMaybe [ m | m <- F.toList s, n == name m ]
+
+instance DescendClass D.DescriptorProto D.DescriptorProto where
+  descend' dp = search (D.DescriptorProto.nested_type dp)
+
+instance DescendClass D.DescriptorProto D.EnumDescriptorProto where
+  descend' dp = search (D.DescriptorProto.enum_type dp)
+
+instance DescendClass D.DescriptorProto D.FieldDescriptorProto where
+  descend' dp = search (D.DescriptorProto.field dp)
+
+instance DescendClass D.FileDescriptorProto D.DescriptorProto where
+  descend' dp = search (D.FileDescriptorProto.message_type dp)
+
+instance DescendClass D.FileDescriptorProto D.EnumDescriptorProto where
+  descend' dp = search (D.FileDescriptorProto.enum_type dp)
+
+instance DescendClass D.FileDescriptorProto D.ServiceDescriptorProto where
+  descend' dp = search (D.FileDescriptorProto.service dp)
+
+instance DescendClass D.EnumDescriptorProto D.EnumValueDescriptorProto where
+  descend' dp = search (D.EnumDescriptorProto.value dp)
+
+instance DescendClass D.ServiceDescriptorProto D.MethodDescriptorProto where
+  descend' dp = search (D.ServiceDescriptorProto.method dp)
+
+instance DescendKey D.FileDescriptorProto where
+  descendKey' dp = search (D.FileDescriptorProto.extension dp)
+
+instance DescendKey D.DescriptorProto where
+  descendKey' dp = search (D.DescriptorProto.extension dp)
+
+instance NameAndOptions D.FileDescriptorProto D.FileOptions where
+  name = flip getVal D.FileDescriptorProto.name
+  options = flip getVal D.FileDescriptorProto.options
+
+instance NameAndOptions D.DescriptorProto D.MessageOptions where
+  name = flip getVal D.DescriptorProto.name
+  options = flip getVal D.DescriptorProto.options
+
+instance NameAndOptions D.FieldDescriptorProto D.FieldOptions where
+  name = flip getVal D.FieldDescriptorProto.name
+  options = flip getVal D.FieldDescriptorProto.options
+
+instance NameAndOptions D.ServiceDescriptorProto D.ServiceOptions where
+  name = flip getVal D.ServiceDescriptorProto.name
+  options = flip getVal D.ServiceDescriptorProto.options
+
+instance NameAndOptions D.MethodDescriptorProto D.MethodOptions where
+  name = flip getVal D.MethodDescriptorProto.name
+  options = flip getVal D.MethodDescriptorProto.options
+
+instance NameAndOptions D.EnumValueDescriptorProto D.EnumValueOptions where
+  name = flip getVal D.EnumValueDescriptorProto.name
+  options = flip getVal D.EnumValueDescriptorProto.options
+
+instance NameAndOptions D.EnumDescriptorProto D.EnumOptions where
+  name = flip getVal D.EnumDescriptorProto.name
+  options = flip getVal D.EnumDescriptorProto.options
+
+toDP :: DescendClass a D.DescriptorProto => String -> a -> Maybe D.DescriptorProto
+toDP s a = descend' a (fromString s)
+
+toEP :: DescendClass a D.EnumDescriptorProto => String -> a -> Maybe D.EnumDescriptorProto
+toEP s a = descend' a (fromString s)
+
+toSP :: String -> D.FileDescriptorProto -> Maybe D.ServiceDescriptorProto
+toSP s a = descend' a (fromString s)
+
+toFP :: String -> D.DescriptorProto -> Maybe D.FieldDescriptorProto
+toFP s a = descend' a (fromString s)
+
+toEVP :: String -> D.EnumDescriptorProto -> Maybe D.EnumValueDescriptorProto
+toEVP s a = descend' a (fromString s)
+
+toMP :: String -> D.ServiceDescriptorProto -> Maybe D.MethodDescriptorProto
+toMP s a = descend' a (fromString s)
+
+test1 :: D.FileOptions
+test1 = options fileDescriptorProto
+
+test2 :: Maybe D.MessageOptions
+test2 = return fileDescriptorProto >>= descend "FieldDescriptorProto" >>= return . options
+
+test3 :: Maybe D.EnumOptions
+test3 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= descend "Type" >>= return . options
+
+test4 :: Maybe D.EnumValueOptions
+test4 = return fileDescriptorProto >>= toDP "FieldDescriptorProto" >>= toEP "Type" >>= descend "TYPE_DOUBLE" >>= return . options
+
+test5 :: Maybe D.FieldOptions
+test5 = return fileDescriptorProto >>= toDP "DescriptorProto" >>= toDP "ExtensionRange" >>= descend "start" >>= return . options
+
+test6 :: Maybe D.ServiceOptions
+test6 = return fileDescriptorProto >>= descend "ImaginaryService" >>= return . options
+
+test7 :: Maybe D.MethodOptions
+test7 = return fileDescriptorProto >>= toSP "ImaginaryService" >>= descend "ImaginaryMethod" >>= return . options
