diff --git a/Changelog.md b/Changelog.md
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,79 @@
 # Changelog for `proto-lens`
 
+## v0.7.1.7
+- Relax upper bounds for ghc-9.10.
+- Bump upper bound to allow ghc-prim-0.12 (ghc-9.10.2).
+- Support GHC 9.12.
+- Support GHC 9.14.
+
+## v0.7.1.2
+- Support GHC 9.4
+
+## v0.7.1.1
+- Relax upper bounds for ghc-9.2
+
+## v0.7.1.0
+- Support GHC 9.0.
+- Fixed parsing of UTF8 chars in text format proto string literals.
+- Support all valid text format boolean field values
+- Remove redundant (.&. 127) from putVarInt (#396)
+
+## v0.7.0.0
+- Support GHC 8.10.
+- Add a method to `Data.ProtoLens.Message` for getting the `DescriptorProto`
+  of a given message.  For a simpler API, see `Data.ProtoLens.Descriptor`
+  from `proto-lens-protobuf-types`.
+- Bump ghc-source-gen to version 0.4.0.0.
+- Bump upper bound to allow base-4.14.
+- Bump upper bound to allow ghc-prim-0.6.
+
+## v0.6.0.0
+
+### Breaking Changes
+- Bump lower bounds to base-4.10 (ghc-8.2).
+- Move `Proto.Google.Protobuf.Descriptor` and
+  `Proto.Google.Protobuf.Compiler.Plugin` to the `proto-lens-protobuf-types`
+  package.
+
+### Backwards-Compatible Changes
+- Bump upper bound to allow profunctors-5.5.
+- Support dependencies on base-4.13 (ghc-8.8) and lens-family-2.0.
+
+## v0.5.1.0
+- Add `decodeMessageDelimitedH` to decode delimited messages from a file handle
+  (#61).
+
+## v0.5.0.1
+- Bump the upper bound on `profunctors` to allow 5.4.
+- Bump the upper bound on `primitive` to allow 0.7.
+- Allow text format protobuf strings to contain unescaped quote characters
+  different from the delimiters (#320).
+
+### Breaking Changes
+- Merge the `lens-labels` library into `proto-lens`:
+    - `Lens.Labels` => `Data.ProtoLens.Fields`
+    - `Lens.Labels.Unwrapped` => `Data.ProtoLens.Labels`
+    - `Lens.Labels.Prism` => `Data.ProtoLens.Prism`
+- Simplify the API of `Data.ProtoLens.Encoding.Wire`, using a plain ADT
+  rather than a GADT to represent unknown field values.
+- If fields have the wrong wire type, store them in `unknownFields` rather
+  than failing the parse. (#125)
+
+### Backwards-Compatible Changes
+- Merge proto-lens-combinators into the proto-lens library.
+- Use generated Haskell code to encode/decode proto messages more quickly.
+  In particular:
+  - Add the methods `parseMessage` and `buildMessage` to `Data.ProtoLens.Message`
+  - Expose an opaque `Parser` monad, which is used by the generated
+    code.
+  - Expose the module `Data.ProtoLens.Encoding.Bytes`, which is used
+    by the generated code.
+  - Various other, related performance optimizations.
+- Add functionality for storing unknown fields as `Vector`s.  (See the
+  changelog of `proto-lens-protoc` for more details.)  Exposes the
+  `Growing` type for mutable vectors of growing capacity.
+- Export the new function `parseMessageDelimited`. (#61)
+
 ## v0.4.0.1
 - Bump the dependencies on `base` and `containers` to `0.4.0.1`.
 
diff --git a/proto-lens-imports/google/protobuf/compiler/plugin.proto b/proto-lens-imports/google/protobuf/compiler/plugin.proto
--- a/proto-lens-imports/google/protobuf/compiler/plugin.proto
+++ b/proto-lens-imports/google/protobuf/compiler/plugin.proto
@@ -1,38 +1,12 @@
 // Protocol Buffers - Google's data interchange format
 // Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
 //
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file or at
+// https://developers.google.com/open-source/licenses/bsd
 
 // Author: kenton@google.com (Kenton Varda)
 //
-// WARNING:  The plugin interface is currently EXPERIMENTAL and is subject to
-//   change.
-//
 // protoc (aka the Protocol Compiler) can be extended via plugins.  A plugin is
 // just a program that reads a CodeGeneratorRequest from stdin and writes a
 // CodeGeneratorResponse to stdout.
@@ -45,11 +19,13 @@
 // flag "--${NAME}_out" is passed to protoc.
 
 syntax = "proto2";
+
 package google.protobuf.compiler;
 option java_package = "com.google.protobuf.compiler";
 option java_outer_classname = "PluginProtos";
 
-option go_package = "github.com/golang/protobuf/protoc-gen-go/plugin;plugin_go";
+option csharp_namespace = "Google.Protobuf.Compiler";
+option go_package = "google.golang.org/protobuf/types/pluginpb";
 
 import "google/protobuf/descriptor.proto";
 
@@ -77,6 +53,11 @@
   // they import.  The files will appear in topological order, so each file
   // appears before any file that imports it.
   //
+  // Note: the files listed in files_to_generate will include runtime-retention
+  // options only, but all other files will include source-retention options.
+  // The source_file_descriptors field below is available in case you need
+  // source-retention options for files_to_generate.
+  //
   // protoc guarantees that all proto_files will be written after
   // the fields above, even though this is not technically guaranteed by the
   // protobuf wire format.  This theoretically could allow a plugin to stream
@@ -89,9 +70,13 @@
   // fully qualified.
   repeated FileDescriptorProto proto_file = 15;
 
+  // File descriptors with all options, including source-retention options.
+  // These descriptors are only provided for the files listed in
+  // files_to_generate.
+  repeated FileDescriptorProto source_file_descriptors = 17;
+
   // The version number of protocol compiler.
   optional Version compiler_version = 3;
-
 }
 
 // The plugin writes an encoded CodeGeneratorResponse to stdout.
@@ -106,6 +91,29 @@
   // exiting with a non-zero status code.
   optional string error = 1;
 
+  // A bitmask of supported features that the code generator supports.
+  // This is a bitwise "or" of values from the Feature enum.
+  optional uint64 supported_features = 2;
+
+  // Sync with code_generator.h.
+  enum Feature {
+    FEATURE_NONE = 0;
+    FEATURE_PROTO3_OPTIONAL = 1;
+    FEATURE_SUPPORTS_EDITIONS = 2;
+  }
+
+  // The minimum edition this plugin supports.  This will be treated as an
+  // Edition enum, but we want to allow unknown values.  It should be specified
+  // according the edition enum value, *not* the edition number.  Only takes
+  // effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.
+  optional int32 minimum_edition = 3;
+
+  // The maximum edition this plugin supports.  This will be treated as an
+  // Edition enum, but we want to allow unknown values.  It should be specified
+  // according the edition enum value, *not* the edition number.  Only takes
+  // effect for plugins that have FEATURE_SUPPORTS_EDITIONS set.
+  optional int32 maximum_edition = 4;
+
   // Represents a single generated file.
   message File {
     // The file name, relative to the output directory.  The name must not
@@ -162,6 +170,11 @@
 
     // The file contents.
     optional string content = 15;
+
+    // Information describing the file content being inserted. If an insertion
+    // point is used, this information will be appropriately offset and inserted
+    // into the code generation metadata for the generated files.
+    optional GeneratedCodeInfo generated_code_info = 16;
   }
   repeated File file = 15;
 }
diff --git a/proto-lens-imports/google/protobuf/descriptor.proto b/proto-lens-imports/google/protobuf/descriptor.proto
--- a/proto-lens-imports/google/protobuf/descriptor.proto
+++ b/proto-lens-imports/google/protobuf/descriptor.proto
@@ -36,11 +36,11 @@
 // A valid .proto file can be translated directly to a FileDescriptorProto
 // without any other information (e.g. without reading its imports).
 
-
 syntax = "proto2";
 
 package google.protobuf;
-option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
+
+option go_package = "google.golang.org/protobuf/types/descriptorpb";
 option java_package = "com.google.protobuf";
 option java_outer_classname = "DescriptorProtos";
 option csharp_namespace = "Google.Protobuf.Reflection";
@@ -57,10 +57,46 @@
   repeated FileDescriptorProto file = 1;
 }
 
+// The full set of known editions.
+enum Edition {
+  // A placeholder for an unknown edition value.
+  EDITION_UNKNOWN = 0;
+
+  // A placeholder edition for specifying default behaviors *before* a feature
+  // was first introduced.  This is effectively an "infinite past".
+  EDITION_LEGACY = 900;
+
+  // Legacy syntax "editions".  These pre-date editions, but behave much like
+  // distinct editions.  These can't be used to specify the edition of proto
+  // files, but feature definitions must supply proto2/proto3 defaults for
+  // backwards compatibility.
+  EDITION_PROTO2 = 998;
+  EDITION_PROTO3 = 999;
+
+  // Editions that have been released.  The specific values are arbitrary and
+  // should not be depended on, but they will always be time-ordered for easy
+  // comparison.
+  EDITION_2023 = 1000;
+  EDITION_2024 = 1001;
+
+  // Placeholder editions for testing feature resolution.  These should not be
+  // used or relyed on outside of tests.
+  EDITION_1_TEST_ONLY = 1;
+  EDITION_2_TEST_ONLY = 2;
+  EDITION_99997_TEST_ONLY = 99997;
+  EDITION_99998_TEST_ONLY = 99998;
+  EDITION_99999_TEST_ONLY = 99999;
+
+  // Placeholder for specifying unbounded edition support.  This should only
+  // ever be used by plugins that can expect to never require any changes to
+  // support a new edition.
+  EDITION_MAX = 0x7FFFFFFF;
+}
+
 // Describes a complete .proto file.
 message FileDescriptorProto {
-  optional string name = 1;       // file name, relative to root of source tree
-  optional string package = 2;    // e.g. "foo", "foo.bar", etc.
+  optional string name = 1;     // file name, relative to root of source tree
+  optional string package = 2;  // e.g. "foo", "foo.bar", etc.
 
   // Names of files imported by this file.
   repeated string dependency = 3;
@@ -85,8 +121,13 @@
   optional SourceCodeInfo source_code_info = 9;
 
   // The syntax of the proto file.
-  // The supported values are "proto2" and "proto3".
+  // The supported values are "proto2", "proto3", and "editions".
+  //
+  // If `edition` is present, this value must be "editions".
   optional string syntax = 12;
+
+  // The edition of the proto file.
+  optional Edition edition = 14;
 }
 
 // Describes a message type.
@@ -100,8 +141,8 @@
   repeated EnumDescriptorProto enum_type = 4;
 
   message ExtensionRange {
-    optional int32 start = 1;
-    optional int32 end = 2;
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Exclusive.
 
     optional ExtensionRangeOptions options = 3;
   }
@@ -115,8 +156,8 @@
   // fields or extension ranges in the same message. Reserved ranges may
   // not overlap.
   message ReservedRange {
-    optional int32 start = 1; // Inclusive.
-    optional int32 end = 2;   // Exclusive.
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Exclusive.
   }
   repeated ReservedRange reserved_range = 9;
   // Reserved field names, which may not be used by fields in the same message.
@@ -128,6 +169,52 @@
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
+  message Declaration {
+    // The extension number declared within the extension range.
+    optional int32 number = 1;
+
+    // The fully-qualified name of the extension field. There must be a leading
+    // dot in front of the full name.
+    optional string full_name = 2;
+
+    // The fully-qualified type name of the extension field. Unlike
+    // Metadata.type, Declaration.type must have a leading dot for messages
+    // and enums.
+    optional string type = 3;
+
+    // If true, indicates that the number is reserved in the extension range,
+    // and any extension field with the number will fail to compile. Set this
+    // when a declared extension field is deleted.
+    optional bool reserved = 5;
+
+    // If true, indicates that the extension must be defined as repeated.
+    // Otherwise the extension must be defined as optional.
+    optional bool repeated = 6;
+
+    reserved 4;  // removed is_repeated
+  }
+
+  // For external users: DO NOT USE. We are in the process of open sourcing
+  // extension declaration and executing internal cleanups before it can be
+  // used externally.
+  repeated Declaration declaration = 2 [retention = RETENTION_SOURCE];
+
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 50;
+
+  // The verification state of the extension range.
+  enum VerificationState {
+    // All the extensions of the range must be declared.
+    DECLARATION = 0;
+    UNVERIFIED = 1;
+  }
+
+  // The verification state of the range.
+  // TODO: flip the default to DECLARATION once all empty ranges
+  // are marked as UNVERIFIED.
+  optional VerificationState verification = 3
+      [default = UNVERIFIED, retention = RETENTION_SOURCE];
+
   // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
@@ -137,42 +224,46 @@
   enum Type {
     // 0 is reserved for errors.
     // Order is weird for historical reasons.
-    TYPE_DOUBLE         = 1;
-    TYPE_FLOAT          = 2;
+    TYPE_DOUBLE = 1;
+    TYPE_FLOAT = 2;
     // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
     // negative values are likely.
-    TYPE_INT64          = 3;
-    TYPE_UINT64         = 4;
+    TYPE_INT64 = 3;
+    TYPE_UINT64 = 4;
     // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
     // negative values are likely.
-    TYPE_INT32          = 5;
-    TYPE_FIXED64        = 6;
-    TYPE_FIXED32        = 7;
-    TYPE_BOOL           = 8;
-    TYPE_STRING         = 9;
+    TYPE_INT32 = 5;
+    TYPE_FIXED64 = 6;
+    TYPE_FIXED32 = 7;
+    TYPE_BOOL = 8;
+    TYPE_STRING = 9;
     // Tag-delimited aggregate.
-    // Group type is deprecated and not supported in proto3. However, Proto3
+    // Group type is deprecated and not supported after google.protobuf. However, Proto3
     // implementations should still be able to parse the group wire format and
-    // treat group fields as unknown fields.
-    TYPE_GROUP          = 10;
-    TYPE_MESSAGE        = 11;  // Length-delimited aggregate.
+    // treat group fields as unknown fields.  In Editions, the group wire format
+    // can be enabled via the `message_encoding` feature.
+    TYPE_GROUP = 10;
+    TYPE_MESSAGE = 11;  // Length-delimited aggregate.
 
     // New in version 2.
-    TYPE_BYTES          = 12;
-    TYPE_UINT32         = 13;
-    TYPE_ENUM           = 14;
-    TYPE_SFIXED32       = 15;
-    TYPE_SFIXED64       = 16;
-    TYPE_SINT32         = 17;  // Uses ZigZag encoding.
-    TYPE_SINT64         = 18;  // Uses ZigZag encoding.
-  };
+    TYPE_BYTES = 12;
+    TYPE_UINT32 = 13;
+    TYPE_ENUM = 14;
+    TYPE_SFIXED32 = 15;
+    TYPE_SFIXED64 = 16;
+    TYPE_SINT32 = 17;  // Uses ZigZag encoding.
+    TYPE_SINT64 = 18;  // Uses ZigZag encoding.
+  }
 
   enum Label {
     // 0 is reserved for errors
-    LABEL_OPTIONAL      = 1;
-    LABEL_REQUIRED      = 2;
-    LABEL_REPEATED      = 3;
-  };
+    LABEL_OPTIONAL = 1;
+    LABEL_REPEATED = 3;
+    // The required label is only allowed in google.protobuf.  In proto3 and Editions
+    // it's explicitly prohibited.  In Editions, the `field_presence` feature
+    // can be used to get this behavior.
+    LABEL_REQUIRED = 2;
+  }
 
   optional string name = 1;
   optional int32 number = 3;
@@ -197,7 +288,6 @@
   // For booleans, "true" or "false".
   // For strings, contains the default text contents (not escaped in any way).
   // For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
-  // TODO(kenton):  Base-64 encode?
   optional string default_value = 7;
 
   // If set, gives the index of a oneof in the containing type's oneof_decl
@@ -211,6 +301,29 @@
   optional string json_name = 10;
 
   optional FieldOptions options = 8;
+
+  // If true, this is a proto3 "optional". When a proto3 field is optional, it
+  // tracks presence regardless of field type.
+  //
+  // When proto3_optional is true, this field must belong to a oneof to signal
+  // to old proto3 clients that presence is tracked for this field. This oneof
+  // is known as a "synthetic" oneof, and this field must be its sole member
+  // (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs
+  // exist in the descriptor only, and do not generate any API. Synthetic oneofs
+  // must be ordered after all "real" oneofs.
+  //
+  // For message fields, proto3_optional doesn't create any semantic change,
+  // since non-repeated message fields always track presence. However it still
+  // indicates the semantic detail of whether the user wrote "optional" or not.
+  // This can be useful for round-tripping the .proto file. For consistency we
+  // give message fields a synthetic oneof also, even though it is not required
+  // to track presence. This is especially important because the parser can't
+  // tell if a field is a message or an enum, so it must always create a
+  // synthetic oneof.
+  //
+  // Proto2 optional fields do not set this flag, because they already indicate
+  // optional with `LABEL_OPTIONAL`.
+  optional bool proto3_optional = 17;
 }
 
 // Describes a oneof.
@@ -234,8 +347,8 @@
   // is inclusive such that it can appropriately represent the entire int32
   // domain.
   message EnumReservedRange {
-    optional int32 start = 1; // Inclusive.
-    optional int32 end = 2;   // Inclusive.
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Inclusive.
   }
 
   // Range of reserved numeric values. Reserved numeric values may not be used
@@ -276,12 +389,11 @@
   optional MethodOptions options = 4;
 
   // Identifies if client streams multiple client messages
-  optional bool client_streaming = 5 [default=false];
+  optional bool client_streaming = 5 [default = false];
   // Identifies if server streams multiple server messages
-  optional bool server_streaming = 6 [default=false];
+  optional bool server_streaming = 6 [default = false];
 }
 
-
 // ===================================================================
 // Options
 
@@ -314,7 +426,6 @@
 //   If this turns out to be popular, a web service will be set up
 //   to automatically assign option numbers.
 
-
 message FileOptions {
 
   // Sets the Java package where classes generated from this .proto will be
@@ -323,42 +434,44 @@
   // domain names.
   optional string java_package = 1;
 
-
-  // If set, all the classes from the .proto file are wrapped in a single
-  // outer class with the given name.  This applies to both Proto1
-  // (equivalent to the old "--one_java_file" option) and Proto2 (where
-  // a .proto always translates to a single class, but you may want to
-  // explicitly choose the class name).
+  // Controls the name of the wrapper Java class generated for the .proto file.
+  // That class will always contain the .proto file's getDescriptor() method as
+  // well as any top-level extensions defined in the .proto file.
+  // If java_multiple_files is disabled, then all the other classes from the
+  // .proto file will be nested inside the single wrapper outer class.
   optional string java_outer_classname = 8;
 
-  // If set true, then the Java code generator will generate a separate .java
+  // If enabled, then the Java code generator will generate a separate .java
   // file for each top-level message, enum, and service defined in the .proto
-  // file.  Thus, these types will *not* be nested inside the outer class
-  // named by java_outer_classname.  However, the outer class will still be
+  // file.  Thus, these types will *not* be nested inside the wrapper class
+  // named by java_outer_classname.  However, the wrapper class will still be
   // generated to contain the file's getDescriptor() method as well as any
   // top-level extensions defined in the file.
-  optional bool java_multiple_files = 10 [default=false];
+  optional bool java_multiple_files = 10 [default = false];
 
   // This option does nothing.
   optional bool java_generate_equals_and_hash = 20 [deprecated=true];
 
-  // If set true, then the Java2 code generator will generate code that
-  // throws an exception whenever an attempt is made to assign a non-UTF-8
-  // byte sequence to a string field.
-  // Message reflection will do the same.
-  // However, an extension field still accepts non-UTF-8 byte sequences.
-  // This option has no effect on when used with the lite runtime.
-  optional bool java_string_check_utf8 = 27 [default=false];
-
+  // A proto2 file can set this to true to opt in to UTF-8 checking for Java,
+  // which will throw an exception if invalid UTF-8 is parsed from the wire or
+  // assigned to a string field.
+  //
+  // TODO: clarify exactly what kinds of field types this option
+  // applies to, and update these docs accordingly.
+  //
+  // Proto3 files already perform these checks. Setting the option explicitly to
+  // false has no effect: it cannot be used to opt proto3 files out of UTF-8
+  // checks.
+  optional bool java_string_check_utf8 = 27 [default = false];
 
   // Generated classes can be optimized for speed or code size.
   enum OptimizeMode {
-    SPEED = 1;        // Generate complete code for parsing, serialization,
-                      // etc.
-    CODE_SIZE = 2;    // Use ReflectionOps to implement these methods.
-    LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
+    SPEED = 1;         // Generate complete code for parsing, serialization,
+                       // etc.
+    CODE_SIZE = 2;     // Use ReflectionOps to implement these methods.
+    LITE_RUNTIME = 3;  // Generate code using MessageLite and the lite runtime.
   }
-  optional OptimizeMode optimize_for = 9 [default=SPEED];
+  optional OptimizeMode optimize_for = 9 [default = SPEED];
 
   // Sets the Go package where structs generated from this .proto will be
   // placed. If omitted, the Go package will be derived from the following:
@@ -367,8 +480,6 @@
   //   - Otherwise, the basename of the .proto file, without extension.
   optional string go_package = 11;
 
-
-
   // Should generic services be generated in each language?  "Generic" services
   // are not specific to any particular RPC system.  They are generated by the
   // main code generators in each language (without additional plugins).
@@ -379,21 +490,21 @@
   // that generate code specific to your particular RPC system.  Therefore,
   // these default to false.  Old code which depends on generic services should
   // explicitly set them to true.
-  optional bool cc_generic_services = 16 [default=false];
-  optional bool java_generic_services = 17 [default=false];
-  optional bool py_generic_services = 18 [default=false];
-  optional bool php_generic_services = 42 [default=false];
+  optional bool cc_generic_services = 16 [default = false];
+  optional bool java_generic_services = 17 [default = false];
+  optional bool py_generic_services = 18 [default = false];
+  reserved 42;  // removed php_generic_services
+  reserved "php_generic_services";
 
   // Is this file deprecated?
   // Depending on the target platform, this can emit Deprecated annotations
   // for everything in the file, or it will be completely ignored; in the very
   // least, this is a formalization for deprecating files.
-  optional bool deprecated = 23 [default=false];
+  optional bool deprecated = 23 [default = false];
 
   // Enables the use of arenas for the proto messages in this file. This applies
   // only to generated classes for C++.
-  optional bool cc_enable_arenas = 31 [default=false];
-
+  optional bool cc_enable_arenas = 31 [default = true];
 
   // Sets the objective c class prefix which is prepended to all objective c
   // generated classes from this .proto. There is no default.
@@ -417,10 +528,9 @@
   // determining the namespace.
   optional string php_namespace = 41;
 
-
   // Use this option to change the namespace of php generated metadata classes.
-  // Default is empty. When this option is empty, the proto file name will be used
-  // for determining the namespace.
+  // Default is empty. When this option is empty, the proto file name will be
+  // used for determining the namespace.
   optional string php_metadata_namespace = 44;
 
   // Use this option to change the package of ruby generated classes. Default
@@ -428,6 +538,9 @@
   // determining the ruby package.
   optional string ruby_package = 45;
 
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 50;
+
   // The parser stores options it doesn't recognize here.
   // See the documentation for the "Options" section above.
   repeated UninterpretedOption uninterpreted_option = 999;
@@ -458,19 +571,21 @@
   //
   // Because this is an option, the above two restrictions are not enforced by
   // the protocol compiler.
-  optional bool message_set_wire_format = 1 [default=false];
+  optional bool message_set_wire_format = 1 [default = false];
 
   // Disables the generation of the standard "descriptor()" accessor, which can
   // conflict with a field of the same name.  This is meant to make migration
   // from proto1 easier; new code should avoid fields named "descriptor".
-  optional bool no_standard_descriptor_accessor = 2 [default=false];
+  optional bool no_standard_descriptor_accessor = 2 [default = false];
 
   // Is this message deprecated?
   // Depending on the target platform, this can emit Deprecated annotations
   // for the message, or it will be completely ignored; in the very least,
   // this is a formalization for deprecating messages.
-  optional bool deprecated = 3 [default=false];
+  optional bool deprecated = 3 [default = false];
 
+  reserved 4, 5, 6;
+
   // Whether the message is an automatically generated map entry type for the
   // maps field.
   //
@@ -486,7 +601,7 @@
   //
   // Implementations may choose not to generate the map_entry=true message, but
   // use a native map in the target language to hold the keys and values.
-  // The reflection APIs in such implementions still need to work as
+  // The reflection APIs in such implementations still need to work as
   // if the field is a repeated message field.
   //
   // NOTE: Do not set the option in .proto files. Always use the maps syntax
@@ -497,6 +612,21 @@
   reserved 8;  // javalite_serializable
   reserved 9;  // javanano_as_lite
 
+  // Enable the legacy handling of JSON field name conflicts.  This lowercases
+  // and strips underscored from the fields before comparison in proto3 only.
+  // The new behavior takes `json_name` into account and applies to proto2 as
+  // well.
+  //
+  // This should only be used as a temporary measure against broken builds due
+  // to the change in behavior for JSON field name conflicts.
+  //
+  // TODO This is legacy behavior we plan to remove once downstream
+  // teams have had time to migrate.
+  optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
+
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 12;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -505,15 +635,24 @@
 }
 
 message FieldOptions {
+  // NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
   // The ctype option instructs the C++ code generator to use a different
   // representation of the field than it normally would.  See the specific
-  // options below.  This option is not yet implemented in the open source
-  // release -- sorry, we'll try to include it in a future version!
-  optional CType ctype = 1 [default = STRING];
+  // options below.  This option is only implemented to support use of
+  // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
+  // type "bytes" in the open source release.
+  // TODO: make ctype actually deprecated.
+  optional CType ctype = 1 [/*deprecated = true,*/ default = STRING];
   enum CType {
     // Default mode.
     STRING = 0;
 
+    // The option [ctype=CORD] may be applied to a non-repeated field of type
+    // "bytes". It indicates that in C++, the data should be stored in a Cord
+    // instead of a string.  For very large strings, this may reduce memory
+    // fragmentation. It may also allow better performance when parsing from a
+    // Cord, or when parsing with aliasing enabled, as the parsed Cord may then
+    // alias the original buffer.
     CORD = 1;
 
     STRING_PIECE = 2;
@@ -522,7 +661,9 @@
   // a more efficient representation on the wire. Rather than repeatedly
   // writing the tag and type for each element, the entire array is encoded as
   // a single length-delimited blob. In proto3, only explicit setting it to
-  // false will avoid using packed encoding.
+  // false will avoid using packed encoding.  This option is prohibited in
+  // Editions, but the `repeated_field_encoding` feature can be used to control
+  // the behavior.
   optional bool packed = 2;
 
   // The jstype option determines the JavaScript type used for values of the
@@ -565,39 +706,106 @@
   // call from multiple threads concurrently, while non-const methods continue
   // to require exclusive access.
   //
-  //
-  // Note that implementations may choose not to check required fields within
-  // a lazy sub-message.  That is, calling IsInitialized() on the outer message
-  // may return true even if the inner message has missing required fields.
-  // This is necessary because otherwise the inner message would have to be
-  // parsed in order to perform the check, defeating the purpose of lazy
-  // parsing.  An implementation which chooses not to check required fields
-  // must be consistent about it.  That is, for any particular sub-message, the
-  // implementation must either *always* check its required fields, or *never*
-  // check its required fields, regardless of whether or not the message has
-  // been parsed.
-  optional bool lazy = 5 [default=false];
+  // Note that lazy message fields are still eagerly verified to check
+  // ill-formed wireformat or missing required fields. Calling IsInitialized()
+  // on the outer message would fail if the inner message has missing required
+  // fields. Failed verification would result in parsing failure (except when
+  // uninitialized messages are acceptable).
+  optional bool lazy = 5 [default = false];
 
+  // unverified_lazy does no correctness checks on the byte stream. This should
+  // only be used where lazy with verification is prohibitive for performance
+  // reasons.
+  optional bool unverified_lazy = 15 [default = false];
+
   // Is this field deprecated?
   // Depending on the target platform, this can emit Deprecated annotations
   // for accessors, or it will be completely ignored; in the very least, this
   // is a formalization for deprecating fields.
-  optional bool deprecated = 3 [default=false];
+  optional bool deprecated = 3 [default = false];
 
   // For Google-internal migration only. Do not use.
-  optional bool weak = 10 [default=false];
+  optional bool weak = 10 [default = false];
 
+  // Indicate that the field value should not be printed out when using debug
+  // formats, e.g. when the field contains sensitive credentials.
+  optional bool debug_redact = 16 [default = false];
 
+  // If set to RETENTION_SOURCE, the option will be omitted from the binary.
+  // Note: as of January 2023, support for this is in progress and does not yet
+  // have an effect (b/264593489).
+  enum OptionRetention {
+    RETENTION_UNKNOWN = 0;
+    RETENTION_RUNTIME = 1;
+    RETENTION_SOURCE = 2;
+  }
+
+  optional OptionRetention retention = 17;
+
+  // This indicates the types of entities that the field may apply to when used
+  // as an option. If it is unset, then the field may be freely used as an
+  // option on any kind of entity. Note: as of January 2023, support for this is
+  // in progress and does not yet have an effect (b/264593489).
+  enum OptionTargetType {
+    TARGET_TYPE_UNKNOWN = 0;
+    TARGET_TYPE_FILE = 1;
+    TARGET_TYPE_EXTENSION_RANGE = 2;
+    TARGET_TYPE_MESSAGE = 3;
+    TARGET_TYPE_FIELD = 4;
+    TARGET_TYPE_ONEOF = 5;
+    TARGET_TYPE_ENUM = 6;
+    TARGET_TYPE_ENUM_ENTRY = 7;
+    TARGET_TYPE_SERVICE = 8;
+    TARGET_TYPE_METHOD = 9;
+  }
+
+  repeated OptionTargetType targets = 19;
+
+  message EditionDefault {
+    optional Edition edition = 3;
+    optional string value = 2;  // Textproto value.
+  }
+  repeated EditionDefault edition_defaults = 20;
+
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 21;
+
+  // Information about the support window of a feature.
+  message FeatureSupport {
+    // The edition that this feature was first available in.  In editions
+    // earlier than this one, the default assigned to EDITION_LEGACY will be
+    // used, and proto files will not be able to override it.
+    optional Edition edition_introduced = 1;
+
+    // The edition this feature becomes deprecated in.  Using this after this
+    // edition may trigger warnings.
+    optional Edition edition_deprecated = 2;
+
+    // The deprecation warning text if this feature is used after the edition it
+    // was marked deprecated in.
+    optional string deprecation_warning = 3;
+
+    // The edition this feature is no longer available in.  In editions after
+    // this one, the last default assigned will be used, and proto files will
+    // not be able to override it.
+    optional Edition edition_removed = 4;
+  }
+  optional FeatureSupport feature_support = 22;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
   // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 
-  reserved 4;  // removed jtype
+  reserved 4;   // removed jtype
+  reserved 18;  // reserve target, target_obsolete_do_not_use
 }
 
 message OneofOptions {
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 1;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -615,10 +823,21 @@
   // Depending on the target platform, this can emit Deprecated annotations
   // for the enum, or it will be completely ignored; in the very least, this
   // is a formalization for deprecating enums.
-  optional bool deprecated = 3 [default=false];
+  optional bool deprecated = 3 [default = false];
 
   reserved 5;  // javanano_as_lite
 
+  // Enable the legacy handling of JSON field name conflicts.  This lowercases
+  // and strips underscored from the fields before comparison in proto3 only.
+  // The new behavior takes `json_name` into account and applies to proto2 as
+  // well.
+  // TODO Remove this legacy behavior once downstream teams have
+  // had time to migrate.
+  optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
+
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 7;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -631,8 +850,19 @@
   // Depending on the target platform, this can emit Deprecated annotations
   // for the enum value, or it will be completely ignored; in the very least,
   // this is a formalization for deprecating enum values.
-  optional bool deprecated = 1 [default=false];
+  optional bool deprecated = 1 [default = false];
 
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 2;
+
+  // Indicate that fields annotated with this enum value should not be printed
+  // out when using debug formats, e.g. when the field contains sensitive
+  // credentials.
+  optional bool debug_redact = 3 [default = false];
+
+  // Information about the support window of a feature value.
+  optional FieldOptions.FeatureSupport feature_support = 4;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -642,6 +872,9 @@
 
 message ServiceOptions {
 
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 34;
+
   // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
   //   framework.  We apologize for hoarding these numbers to ourselves, but
   //   we were already using them long before we decided to release Protocol
@@ -651,7 +884,7 @@
   // Depending on the target platform, this can emit Deprecated annotations
   // for the service, or it will be completely ignored; in the very least,
   // this is a formalization for deprecating services.
-  optional bool deprecated = 33 [default=false];
+  optional bool deprecated = 33 [default = false];
 
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
@@ -671,19 +904,22 @@
   // Depending on the target platform, this can emit Deprecated annotations
   // for the method, or it will be completely ignored; in the very least,
   // this is a formalization for deprecating methods.
-  optional bool deprecated = 33 [default=false];
+  optional bool deprecated = 33 [default = false];
 
   // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
   // or neither? HTTP based RPC implementation may choose GET verb for safe
   // methods, and PUT verb for idempotent methods instead of the default POST.
   enum IdempotencyLevel {
     IDEMPOTENCY_UNKNOWN = 0;
-    NO_SIDE_EFFECTS     = 1; // implies idempotent
-    IDEMPOTENT          = 2; // idempotent, but may have side effects
+    NO_SIDE_EFFECTS = 1;  // implies idempotent
+    IDEMPOTENT = 2;       // idempotent, but may have side effects
   }
-  optional IdempotencyLevel idempotency_level =
-      34 [default=IDEMPOTENCY_UNKNOWN];
+  optional IdempotencyLevel idempotency_level = 34
+      [default = IDEMPOTENCY_UNKNOWN];
 
+  // Any features defined in the specific edition.
+  optional FeatureSet features = 35;
+
   // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
 
@@ -691,7 +927,6 @@
   extensions 1000 to max;
 }
 
-
 // A message representing a option the parser does not recognize. This only
 // appears in options protos created by the compiler::Parser class.
 // DescriptorPool resolves these when building Descriptor objects. Therefore,
@@ -702,8 +937,8 @@
   // The name of the uninterpreted option.  Each string represents a segment in
   // a dot-separated name.  is_extension is true iff a segment represents an
   // extension (denoted with parentheses in options specs in .proto files).
-  // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
-  // "foo.(bar.baz).qux".
+  // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
+  // "foo.(bar.baz).moo".
   message NamePart {
     required string name_part = 1;
     required bool is_extension = 2;
@@ -721,6 +956,172 @@
 }
 
 // ===================================================================
+// Features
+
+// TODO Enums in C++ gencode (and potentially other languages) are
+// not well scoped.  This means that each of the feature enums below can clash
+// with each other.  The short names we've chosen maximize call-site
+// readability, but leave us very open to this scenario.  A future feature will
+// be designed and implemented to handle this, hopefully before we ever hit a
+// conflict here.
+message FeatureSet {
+  enum FieldPresence {
+    FIELD_PRESENCE_UNKNOWN = 0;
+    EXPLICIT = 1;
+    IMPLICIT = 2;
+    LEGACY_REQUIRED = 3;
+  }
+  optional FieldPresence field_presence = 1 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_FIELD,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "EXPLICIT" },
+    edition_defaults = { edition: EDITION_PROTO3, value: "IMPLICIT" },
+    edition_defaults = { edition: EDITION_2023, value: "EXPLICIT" }
+  ];
+
+  enum EnumType {
+    ENUM_TYPE_UNKNOWN = 0;
+    OPEN = 1;
+    CLOSED = 2;
+  }
+  optional EnumType enum_type = 2 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_ENUM,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "CLOSED" },
+    edition_defaults = { edition: EDITION_PROTO3, value: "OPEN" }
+  ];
+
+  enum RepeatedFieldEncoding {
+    REPEATED_FIELD_ENCODING_UNKNOWN = 0;
+    PACKED = 1;
+    EXPANDED = 2;
+  }
+  optional RepeatedFieldEncoding repeated_field_encoding = 3 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_FIELD,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "EXPANDED" },
+    edition_defaults = { edition: EDITION_PROTO3, value: "PACKED" }
+  ];
+
+  enum Utf8Validation {
+    UTF8_VALIDATION_UNKNOWN = 0;
+    VERIFY = 2;
+    NONE = 3;
+    reserved 1;
+  }
+  optional Utf8Validation utf8_validation = 4 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_FIELD,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "NONE" },
+    edition_defaults = { edition: EDITION_PROTO3, value: "VERIFY" }
+  ];
+
+  enum MessageEncoding {
+    MESSAGE_ENCODING_UNKNOWN = 0;
+    LENGTH_PREFIXED = 1;
+    DELIMITED = 2;
+  }
+  optional MessageEncoding message_encoding = 5 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_FIELD,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "LENGTH_PREFIXED" }
+  ];
+
+  enum JsonFormat {
+    JSON_FORMAT_UNKNOWN = 0;
+    ALLOW = 1;
+    LEGACY_BEST_EFFORT = 2;
+  }
+  optional JsonFormat json_format = 6 [
+    retention = RETENTION_RUNTIME,
+    targets = TARGET_TYPE_MESSAGE,
+    targets = TARGET_TYPE_ENUM,
+    targets = TARGET_TYPE_FILE,
+    feature_support = {
+      edition_introduced: EDITION_2023,
+    },
+    edition_defaults = { edition: EDITION_LEGACY, value: "LEGACY_BEST_EFFORT" },
+    edition_defaults = { edition: EDITION_PROTO3, value: "ALLOW" }
+  ];
+
+  reserved 999;
+
+  extensions 1000 to 9994 [
+    declaration = {
+      number: 1000,
+      full_name: ".pb.cpp",
+      type: ".pb.CppFeatures"
+    },
+    declaration = {
+      number: 1001,
+      full_name: ".pb.java",
+      type: ".pb.JavaFeatures"
+    },
+    declaration = { number: 1002, full_name: ".pb.go", type: ".pb.GoFeatures" },
+    declaration = {
+      number: 9990,
+      full_name: ".pb.proto1",
+      type: ".pb.Proto1Features"
+    }
+  ];
+
+  extensions 9995 to 9999;  // For internal testing
+  extensions 10000;         // for https://github.com/bufbuild/protobuf-es
+}
+
+// A compiled specification for the defaults of a set of features.  These
+// messages are generated from FeatureSet extensions and can be used to seed
+// feature resolution. The resolution with this object becomes a simple search
+// for the closest matching edition, followed by proto merges.
+message FeatureSetDefaults {
+  // A map from every known edition with a unique set of defaults to its
+  // defaults. Not all editions may be contained here.  For a given edition,
+  // the defaults at the closest matching edition ordered at or before it should
+  // be used.  This field must be in strict ascending order by edition.
+  message FeatureSetEditionDefault {
+    optional Edition edition = 3;
+
+    // Defaults of features that can be overridden in this edition.
+    optional FeatureSet overridable_features = 4;
+
+    // Defaults of features that can't be overridden in this edition.
+    optional FeatureSet fixed_features = 5;
+
+    reserved 1, 2;
+    reserved "features";
+  }
+  repeated FeatureSetEditionDefault defaults = 1;
+
+  // The minimum supported edition (inclusive) when this was constructed.
+  // Editions before this will not have defaults.
+  optional Edition minimum_edition = 4;
+
+  // The maximum known edition (inclusive) when this was constructed. Editions
+  // after this will not have reliable defaults.
+  optional Edition maximum_edition = 5;
+}
+
+// ===================================================================
 // Optional source code info
 
 // Encapsulates information about the original source file from which a
@@ -763,7 +1164,7 @@
   //   beginning of the "extend" block and is shared by all extensions within
   //   the block.
   // - Just because a location's span is a subset of some other location's span
-  //   does not mean that it is a descendent.  For example, a "group" defines
+  //   does not mean that it is a descendant.  For example, a "group" defines
   //   both a type and a field in a single declaration.  Thus, the locations
   //   corresponding to the type and field and their components will overlap.
   // - Code which tries to interpret locations should probably be designed to
@@ -775,8 +1176,8 @@
     // location.
     //
     // Each element is a field number or an index.  They form a path from
-    // the root FileDescriptorProto to the place where the definition.  For
-    // example, this path:
+    // the root FileDescriptorProto to the place where the definition appears.
+    // For example, this path:
     //   [ 4, 3, 2, 7, 1 ]
     // refers to:
     //   file.message_type(3)  // 4, 3
@@ -794,14 +1195,14 @@
     //   [ 4, 3, 2, 7 ]
     // this path refers to the whole field declaration (from the beginning
     // of the label to the terminating semicolon).
-    repeated int32 path = 1 [packed=true];
+    repeated int32 path = 1 [packed = true];
 
     // Always has exactly three or four elements: start line, start column,
     // end line (optional, otherwise assumed same as start line), end column.
     // These are packed into a single field for efficiency.  Note that line
     // and column numbers are zero-based -- typically you will want to add
     // 1 to each before displaying to a user.
-    repeated int32 span = 2 [packed=true];
+    repeated int32 span = 2 [packed = true];
 
     // If this SourceCodeInfo represents a complete declaration, these are any
     // comments appearing before and after the declaration which appear to be
@@ -830,13 +1231,13 @@
     //   // Comment attached to baz.
     //   // Another line attached to baz.
     //
-    //   // Comment attached to qux.
+    //   // Comment attached to moo.
     //   //
-    //   // Another line attached to qux.
-    //   optional double qux = 4;
+    //   // Another line attached to moo.
+    //   optional double moo = 4;
     //
     //   // Detached comment for corge. This is not leading or trailing comments
-    //   // to qux or corge because there are blank lines separating it from
+    //   // to moo or corge because there are blank lines separating it from
     //   // both.
     //
     //   // Detached comment for corge paragraph 2.
@@ -866,7 +1267,7 @@
   message Annotation {
     // Identifies the element in the original source .proto file. This field
     // is formatted the same as SourceCodeInfo.Location.path.
-    repeated int32 path = 1 [packed=true];
+    repeated int32 path = 1 [packed = true];
 
     // Identifies the filesystem path to the original source .proto.
     optional string source_file = 2;
@@ -876,8 +1277,20 @@
     optional int32 begin = 3;
 
     // Identifies the ending offset in bytes in the generated code that
-    // relates to the identified offset. The end offset should be one past
+    // relates to the identified object. The end offset should be one past
     // the last relevant byte (so the length of the text = end - begin).
     optional int32 end = 4;
+
+    // Represents the identified object's effect on the element in the original
+    // .proto file.
+    enum Semantic {
+      // There is no effect or the effect is indescribable.
+      NONE = 0;
+      // The element is set or otherwise mutated.
+      SET = 1;
+      // An alias to the element is returned.
+      ALIAS = 2;
+    }
+    optional Semantic semantic = 5;
   }
 }
diff --git a/proto-lens.cabal b/proto-lens.cabal
--- a/proto-lens.cabal
+++ b/proto-lens.cabal
@@ -1,11 +1,11 @@
--- This file has been generated from package.yaml by hpack version 0.28.2.
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.39.1.
 --
 -- see: https://github.com/sol/hpack
---
--- hash: 4f92a795e1d923f48abe676c6c1e012d63d6ee27875f160ef0f14dd0f3710ba6
 
 name:           proto-lens
-version:        0.4.0.1
+version:        0.7.1.7
 synopsis:       A lens-based implementation of protocol buffers in Haskell.
 description:    The proto-lens library provides an API for protocol buffers using modern Haskell language and library patterns.  Specifically, it provides:
                 .
@@ -23,12 +23,11 @@
 license:        BSD3
 license-file:   LICENSE
 build-type:     Simple
-cabal-version:  >= 1.10
 extra-source-files:
     Changelog.md
 data-files:
-    proto-lens-imports/google/protobuf/compiler/plugin.proto
     proto-lens-imports/google/protobuf/descriptor.proto
+    proto-lens-imports/google/protobuf/compiler/plugin.proto
 
 source-repository head
   type: git
@@ -38,33 +37,71 @@
 library
   exposed-modules:
       Data.ProtoLens
+      Data.ProtoLens.Combinators
       Data.ProtoLens.Default
       Data.ProtoLens.Encoding
+      Data.ProtoLens.Encoding.Bytes
+      Data.ProtoLens.Encoding.Growing
+      Data.ProtoLens.Encoding.Parser
+      Data.ProtoLens.Encoding.Parser.Unsafe
       Data.ProtoLens.Encoding.Wire
+      Data.ProtoLens.Field
+      Data.ProtoLens.Labels
       Data.ProtoLens.Message
       Data.ProtoLens.Message.Enum
+      Data.ProtoLens.Prism
       Data.ProtoLens.Service.Types
       Data.ProtoLens.TextFormat
-      Proto.Google.Protobuf.Compiler.Plugin
-      Proto.Google.Protobuf.Compiler.Plugin_Fields
-      Proto.Google.Protobuf.Descriptor
-      Proto.Google.Protobuf.Descriptor_Fields
   other-modules:
-      Data.ProtoLens.Encoding.Bytes
+      Data.ProtoLens.Encoding.Parser.Internal
       Data.ProtoLens.TextFormat.Parser
   hs-source-dirs:
       src
   build-depends:
-      attoparsec ==0.13.*
-    , base >=4.9 && <4.13
-    , bytestring ==0.10.*
-    , containers >=0.5 && <0.7
-    , deepseq ==1.4.*
-    , lens-family ==1.2.*
-    , lens-labels ==0.3.*
+      base >=4.10 && <4.23
+    , bytestring >=0.10 && <0.14
+    , containers >=0.5 && <0.9
+    , deepseq >=1.4 && <1.6
+    , ghc-prim >=0.4 && <0.14
+    , lens-family >=1.2 && <2.2
     , parsec ==3.1.*
     , pretty ==1.1.*
-    , text ==1.2.*
-    , transformers >=0.4 && <0.6
-    , void ==0.7.*
+    , primitive >=0.6 && <0.10
+    , profunctors >=5.2 && <6.0
+    , tagged ==0.8.*
+    , text >=1.2 && <2.2
+    , transformers >=0.4 && <0.7
+    , vector >=0.11 && <0.14
+  default-language: Haskell2010
+
+test-suite growing_test
+  type: exitcode-stdio-1.0
+  main-is: growing_test.hs
+  other-modules:
+      Paths_proto_lens
+  hs-source-dirs:
+      tests
+  build-depends:
+      QuickCheck
+    , base
+    , proto-lens
+    , tasty
+    , tasty-quickcheck
+    , vector
+  default-language: Haskell2010
+
+test-suite parser_test
+  type: exitcode-stdio-1.0
+  main-is: parser_test.hs
+  other-modules:
+      Paths_proto_lens
+  hs-source-dirs:
+      tests
+  build-depends:
+      QuickCheck
+    , base
+    , bytestring
+    , proto-lens
+    , tasty
+    , tasty-quickcheck
   default-language: Haskell2010
diff --git a/src/Data/ProtoLens/Combinators.hs b/src/Data/ProtoLens/Combinators.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Combinators.hs
@@ -0,0 +1,47 @@
+-- Copyright 2016 Google Inc. All Rights Reserved.
+--
+-- Use of this source code is governed by a BSD-style
+-- license that can be found in the LICENSE file or at
+-- https://developers.google.com/open-source/licenses/bsd
+
+{-# LANGUAGE RankNTypes #-}
+-- | An assorted collection of functions useful when working with ProtoLens
+-- protocol buffers.  These functions are inspired by functionality found in
+-- the protobuf implementation in other languages.
+module Data.ProtoLens.Combinators
+    ( has
+    , clear
+    , make
+    , modifyInState
+    ) where
+
+import Control.Monad.Trans.State (State, execState)
+import Data.ProtoLens (Message(..))
+import Data.Maybe (isJust)
+import Lens.Family2 (LensLike, Phantom, Setter, to, (.~))
+
+-- | Turns a 'LensLike' getting a 'Maybe' into a 'Getter' of a 'Bool'
+-- that returns @True@ when the 'Maybe' is @Just@ something.
+--
+-- I.e., makes a getter for a 'Maybe' field that returns whether it's set.
+has :: Phantom f => LensLike f a a' (Maybe b) b' -> LensLike f a a' Bool b''
+has = (. to isJust)
+
+-- | Sets the provided lens in @a@ to @Nothing@.
+clear :: Setter a a' b (Maybe b') -> a -> a'
+clear setter = setter .~ Nothing
+
+-- | Creates a 'Default' and then applies the provided `State` to it.  This is
+-- convenient for creating complicated structures.
+make :: Message msg => State msg a -> msg
+make = modifyInState defMessage
+
+-- | Allows one to modify a value in the 'State' monad.  Note that this is
+-- just for syntactic convenience with @do@ blocks, e.g.
+--
+-- @
+--    newThing = modifyInState thing $ do
+--        ...
+-- @
+modifyInState :: s -> State s a -> s
+modifyInState = flip execState
diff --git a/src/Data/ProtoLens/Encoding.hs b/src/Data/ProtoLens/Encoding.hs
--- a/src/Data/ProtoLens/Encoding.hs
+++ b/src/Data/ProtoLens/Encoding.hs
@@ -1,83 +1,33 @@
--- Copyright 2016 Google Inc. All Rights Reserved.
---
--- Use of this source code is governed by a BSD-style
--- license that can be found in the LICENSE file or at
--- https://developers.google.com/open-source/licenses/bsd
-
--- | Functions for encoding and decoding protocol buffer Messages.
---
--- TODO: Currently all operations are on strict ByteStrings;
--- we should try to generalize to lazy Bytestrings as well.
-{-# LANGUAGE BangPatterns #-}
-{-# LANGUAGE GADTs #-}
-{-# LANGUAGE LambdaCase #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TypeApplications #-}
-module Data.ProtoLens.Encoding(
+{-# LANGUAGE CPP #-}
+module Data.ProtoLens.Encoding (
     encodeMessage,
     buildMessage,
-    buildMessageDelimited,
     decodeMessage,
+    parseMessage,
     decodeMessageOrDie,
+    -- ** Delimited messages
+    buildMessageDelimited,
+    parseMessageDelimited,
+    decodeMessageDelimitedH,
     ) where
 
-import Data.ProtoLens.Message
-import Data.ProtoLens.Encoding.Bytes
-import Data.ProtoLens.Encoding.Wire
+import System.IO (Handle)
 
-import Control.Applicative ((<|>))
-import Control.Monad (guard)
-import Data.Attoparsec.ByteString as Parse
-import Data.Bool (bool)
-import Data.Monoid ((<>))
-import Data.Proxy (Proxy(Proxy))
-import Data.Text.Encoding (encodeUtf8, decodeUtf8')
-import Data.Text.Encoding.Error (UnicodeException(..))
-import qualified Data.Text as T
-import qualified Data.ByteString as B
-import qualified Data.Map.Strict as Map
-import Data.ByteString.Lazy.Builder as Builder
-import qualified Data.ByteString.Lazy as L
-import Lens.Family2 (Lens', set, over, (^.), (&))
+import Data.ProtoLens.Message (Message(..))
+import Data.ProtoLens.Encoding.Bytes (Parser, Builder)
+import qualified Data.ProtoLens.Encoding.Bytes as Bytes
 
--- TODO: We could be more incremental when parsing/encoding length-based fields,
--- rather than forcing the whole thing.  E.g., for encoding we're doing extra
--- allocation by building an intermediate bytestring.
+import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Trans.Except (runExceptT, ExceptT(..))
+import qualified Data.ByteString as B
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup ((<>))
+#endif
 
 -- | Decode a message from its wire format.  Returns 'Left' if the decoding
 -- fails.
 decodeMessage :: Message msg => B.ByteString -> Either String msg
-decodeMessage input = parseOnly (parseMessage endOfInput) input
-
--- | Parse a message with the given ending delimiter (which will be EndGroup in
--- the case of a group, and end-of-input otherwise).
-parseMessage :: forall msg . Message msg => Parser () -> Parser msg
-parseMessage end = (Parse.<?> T.unpack (messageName (Proxy @msg))) $ do
-    (msg, unsetFields) <- loop defMessage requiredFields
-    if Map.null unsetFields
-        then return $ over unknownFields reverse
-                    $ reverseRepeatedFields fields msg
-        else fail $ "Missing required fields "
-                        ++ show (map fieldDescriptorName
-                                    $ Map.elems $ unsetFields)
-  where
-    fields = fieldsByTag
-    addUnknown :: TaggedValue -> msg -> msg
-    addUnknown !f = over' unknownFields (f :)
-    requiredFields = Map.filter isRequired fields
-    loop :: msg -> Map.Map Tag (FieldDescriptor msg)
-            -> Parser (msg, Map.Map Tag (FieldDescriptor msg))
-    loop msg unsetFields = ((msg, unsetFields) <$ end)
-                <|> do
-                    tv@(TaggedValue tag _) <- getTaggedValue
-                    case Map.lookup tag fields of
-                        Nothing -> (loop $! addUnknown tv msg) unsetFields
-                        Just field -> do
-                            !msg' <- parseAndAddField msg field tv
-                                      <?> fieldDescriptorName field
-                            loop msg' $! Map.delete tag unsetFields
+decodeMessage = Bytes.runParser parseMessage
 
 -- | Decode a message from its wire format.  Throws an error if the decoding
 -- fails.
@@ -86,90 +36,9 @@
     Left e -> error $ "decodeMessageOrDie: " ++ e
     Right x -> x
 
-runEither :: Either String a -> Parser a
-runEither = either fail return
-
-parseAndAddField :: msg
-                 -> FieldDescriptor msg
-                 -> TaggedValue
-                 -> Parser msg
-parseAndAddField
-    !msg
-    (FieldDescriptor _ typeDescriptor accessor)
-    (TaggedValue tag (WireValue wt val)) = let
-          getSimpleVal = case typeDescriptor of
-                            MessageField GroupType -> do
-                                Equal <- equalWireTypes StartGroup wt
-                                parseMessage (endOfGroup tag)
-                            MessageField MessageType -> do
-                                Equal <- equalWireTypes Lengthy wt
-                                runEither $ decodeMessage val
-                            ScalarField f -> case fieldWireType f of
-                                FieldWireType fieldWt _ get -> do
-                                    Equal <- equalWireTypes fieldWt wt
-                                    runEither $ get val
-          -- Get a block of packed values, reversed.
-          getPackedVals = case typeDescriptor of
-            MessageField _ -> fail "Messages can't be packed"
-            ScalarField f -> case fieldWireType f of
-              FieldWireType fieldWt _ get -> do
-                Equal <- equalWireTypes Lengthy wt
-                let getElt = do
-                          wv <- getWireValue fieldWt
-                          x <- runEither $ get wv
-                          return $! x
-                runEither $ parseOnly (manyReversedTill getElt endOfInput) val
-          in case accessor of
-              PlainField _ f -> do
-                  !x <- getSimpleVal
-                  return $! set f x msg
-              OptionalField f -> do
-                  !x <- getSimpleVal
-                  return $! set f (Just x) msg
-              -- Parse either a packed or unpacked representation,
-              -- depending on how it was encoded.
-              -- Note that if fieldWt is Lengthy (e.g., "string" or
-              -- message) we should always parse it as unpacked.
-              RepeatedField _ f
-                -> (do
-                        !x <- getSimpleVal
-                        return $! over' f (x :) msg)
-                <|> (do
-                        xs <- getPackedVals
-                        return $! over' f (xs ++) msg)
-                <|> fail ("Expected a repeated field wire type but found "
-                            ++ show wt)
-              MapField keyLens valueLens f -> do
-                  entry <- getSimpleVal
-                  let !key = entry ^. keyLens
-                  let !value = entry ^. valueLens
-                  return $! over f
-                      (Map.insert key value)
-                      msg
-
--- | Strict version of 'over' that forces the old value.
--- Helps prevent gross space leaks when modifying a list field.
---
--- In particular, a naive `@over f (x :) y@ keeps the old value of @y@ around
--- in a thunk, because @(:)@ isn't strict in its second argument.  (Similarly
--- for @(++)@.)
-over' :: Lens' a b -> (b -> b) -> a -> a
-over' f g = over f (\(!x) -> g x)
-
--- | Run the parser zero or more times, until the "end" parser succeeds.
--- Returns a list of the parsed elements, in reverse order.
-manyReversedTill :: Parser a -> Parser b -> Parser [a]
-manyReversedTill p end = loop []
-  where
-    loop xs = (end >> return xs) <|> (p >>= \x -> loop (x:xs))
-
 -- | Encode a message to the wire format as a strict 'ByteString'.
 encodeMessage :: Message msg => msg -> B.ByteString
-encodeMessage = L.toStrict . toLazyByteString . buildMessage
-
--- | Encode a message to the wire format, as part of a 'Builder'.
-buildMessage :: Message msg => msg -> Builder
-buildMessage = foldMap putTaggedValue . messageToTaggedValues
+encodeMessage = Bytes.runBuilder . buildMessage
 
 -- | Encode a message to the wire format, prefixed by its size as a VarInt,
 -- as part of a 'Builder'.
@@ -178,113 +47,18 @@
 -- format expected by some protocols.
 buildMessageDelimited :: Message msg => msg -> Builder
 buildMessageDelimited msg =
-  let b = L.toStrict . toLazyByteString $ buildMessage msg in
-    putVarInt (fromIntegral $ B.length b) <> byteString b
-
--- | Encode a message as a sequence of key-value pairs.
-messageToTaggedValues :: Message msg => msg -> [TaggedValue]
-messageToTaggedValues msg =
-    mconcat
-        [ messageFieldToVals tag fieldDescr msg
-        | (tag, fieldDescr) <- Map.toList fieldsByTag
-        ]
-    ++ msg ^. unknownFields
-
-messageFieldToVals :: Tag -> FieldDescriptor a -> a -> [TaggedValue]
-messageFieldToVals tag (FieldDescriptor _ typeDescriptor accessor) msg =
-    let
-        embed src
-            = case typeDescriptor of
-                MessageField MessageType -> [TaggedValue tag $ WireValue Lengthy
-                                                  $ encodeMessage src]
-                MessageField GroupType ->
-                    TaggedValue tag (WireValue StartGroup ())
-                            : messageToTaggedValues src
-                                ++ [TaggedValue tag $ WireValue EndGroup ()]
-                ScalarField f -> case fieldWireType f of
-                    FieldWireType wt convert _ ->
-                        [TaggedValue tag $ WireValue wt (convert src)]
-        embedPacked [] = []
-        embedPacked src
-            = case typeDescriptor of
-                MessageField _ -> error "Messages can't be packed"
-                ScalarField f -> case fieldWireType f of
-                    FieldWireType wt convert _ -> let
-                        v = L.toStrict $ toLazyByteString
-                            $ mconcat [putWireValue wt (convert x) | x <- src]
-                        in [TaggedValue tag $ WireValue Lengthy v]
-    in case accessor of
-            PlainField d f
-                -- proto3 optional scalar field:
-                | Optional <- d, src == fieldDefault -> []
-                -- proto3 optional non-scalar field, or proto2 required field:
-                | otherwise -> embed src
-              where src = msg ^. f
-            -- proto2 optional field:
-            OptionalField f -> foldMap embed (msg ^. f)
-            -- Note: using 'concatMap' instead of 'foldMap' below
-            -- seems to allow better list fusion.
-            RepeatedField Unpacked f -> concatMap embed (msg ^. f)
-            RepeatedField Packed f -> embedPacked (msg ^. f)
-            MapField keyLens valueLens f ->
-                concatMap (\(k, v) -> embed $ defMessage
-                                                & set keyLens k
-                                                & set valueLens v)
-                    $ Map.toList (msg ^. f)
-
-data FieldWireType value where
-    FieldWireType :: WireType w -> (value -> w) -> (w -> Either String value)
-                  -> FieldWireType value
-
-fieldWireType :: ScalarField value -> FieldWireType value
--- TODO: Don't let toEnum crash on unknown enum values.
-fieldWireType EnumField = simpleFieldWireType VarInt
-                              (fromIntegral . fromEnum)
-                              (toEnum . fromIntegral)
-fieldWireType BoolField = simpleFieldWireType VarInt (bool 0 1) (/= 0)
--- Note: int{32,64} and sfixed{32,64} are stored using the signed -> unsigned
--- conversion of fromIntegral.
-fieldWireType Int32Field = integralFieldWireType VarInt
-fieldWireType Int64Field = integralFieldWireType VarInt
-fieldWireType UInt32Field = integralFieldWireType VarInt
-fieldWireType UInt64Field = identityFieldWireType VarInt
-fieldWireType SInt32Field = simpleFieldWireType VarInt
-                                (fromIntegral . signedInt32ToWord)
-                                (wordToSignedInt32 . fromIntegral)
-fieldWireType SInt64Field = simpleFieldWireType VarInt
-                                signedInt64ToWord wordToSignedInt64
-fieldWireType Fixed32Field = identityFieldWireType Fixed32
-fieldWireType Fixed64Field = identityFieldWireType Fixed64
-fieldWireType SFixed32Field = integralFieldWireType Fixed32
-fieldWireType SFixed64Field = integralFieldWireType Fixed64
-fieldWireType FloatField = simpleFieldWireType Fixed32 floatToWord wordToFloat
-fieldWireType DoubleField = simpleFieldWireType Fixed64
-                                doubleToWord wordToDouble
-fieldWireType StringField = FieldWireType Lengthy encodeUtf8
-                                    (stringizeError . decodeUtf8')
-fieldWireType BytesField = identityFieldWireType Lengthy
-
-endOfGroup :: Tag -> Parser ()
-endOfGroup tag = do
-    TaggedValue tag' (WireValue wt _) <- getTaggedValue
-    Equal <- equalWireTypes EndGroup wt
-    guard (tag == tag')
-
--- | Helper function to define a field type whose decoding operation can't fail.
-simpleFieldWireType :: WireType w -> (value -> w) -> (w -> value)
-                    -> FieldWireType value
-simpleFieldWireType w f g = FieldWireType w f (return . g)
-
--- | A simple field type which is the same as its wire type.
-identityFieldWireType :: WireType w -> FieldWireType w
-identityFieldWireType w = simpleFieldWireType w id id
+    let b = encodeMessage msg
+    in Bytes.putVarInt (fromIntegral $ B.length b) <> Bytes.putBytes b
 
--- | A simple field type which converts to/from its wire type via
--- "fromIntegral".
-integralFieldWireType
-    :: (Integral w, Integral value) => WireType w -> FieldWireType value
-integralFieldWireType w = simpleFieldWireType w fromIntegral fromIntegral
+parseMessageDelimited :: Message msg => Parser msg
+parseMessageDelimited = do
+    len <- Bytes.getVarInt
+    bytes <- Bytes.getBytes $ fromIntegral len
+    either fail return $ decodeMessage bytes
 
-stringizeError :: Either UnicodeException a -> Either String a
-stringizeError (Left e) = Left (show e)
-stringizeError (Right a) = Right a
+-- | Same as @decodeMessage@ but for delimited messages read through a Handle
+decodeMessageDelimitedH :: Message msg => Handle -> IO (Either String msg)
+decodeMessageDelimitedH h = runExceptT $
+    Bytes.getVarIntH h >>=
+    liftIO . B.hGet h . fromIntegral >>=
+    ExceptT . return . decodeMessage
diff --git a/src/Data/ProtoLens/Encoding/Bytes.hs b/src/Data/ProtoLens/Encoding/Bytes.hs
--- a/src/Data/ProtoLens/Encoding/Bytes.hs
+++ b/src/Data/ProtoLens/Encoding/Bytes.hs
@@ -5,64 +5,169 @@
 -- https://developers.google.com/open-source/licenses/bsd
 
 {-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE RankNTypes #-}
 {-# LANGUAGE ScopedTypeVariables #-}
+{-# LANGUAGE LambdaCase #-}
 
 -- | Utility functions for parsing and encoding individual types.
 module Data.ProtoLens.Encoding.Bytes(
+    -- * Running encodings
+    Parser,
+    Builder,
+    runParser,
+    isolate,
+    runBuilder,
+    -- * Bytestrings
+    getBytes,
+    putBytes,
+    -- * Text
+    getText,
+    -- * Integral types
     getVarInt,
+    getVarIntH,
     putVarInt,
-    anyBits,
+    getFixed32,
+    getFixed64,
+    putFixed32,
+    putFixed64,
+    -- * Floating-point types
     wordToFloat,
     wordToDouble,
     floatToWord,
     doubleToWord,
+    -- * Signed types
     signedInt32ToWord,
     wordToSignedInt32,
     signedInt64ToWord,
     wordToSignedInt64,
+    -- * Other utilities
+    atEnd,
+    runEither,
+    (<?>),
+    foldMapBuilder,
     ) where
 
-import Data.Attoparsec.ByteString as Parse
+import Control.Monad.IO.Class (liftIO)
+import Control.Monad.Trans.Except (throwE, ExceptT)
 import Data.Bits
-import Data.ByteString.Lazy.Builder as Builder
+import Data.ByteString (ByteString)
+import Data.ByteString.Builder as Builder
+import qualified Data.ByteString.Builder.Internal as Internal
+import qualified Data.ByteString.Lazy as L
 import Data.Int (Int32, Int64)
-import Data.Monoid ((<>))
-import Data.Word (Word32, Word64)
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup ((<>))
+#endif
+import qualified Data.Vector.Generic as V
+import Data.Word (Word8, Word32, Word64)
+import Foreign.Marshal (malloc, free)
+import System.IO (Handle, hGetBuf)
+#if MIN_VERSION_base(4,11,0)
+import qualified GHC.Float as Float
+import Foreign.Storable (peek)
+#else
 import Foreign.Ptr (castPtr)
 import Foreign.Marshal.Alloc (alloca)
 import Foreign.Storable (Storable, peek, poke)
 import System.IO.Unsafe (unsafePerformIO)
+#endif
 
+import Data.ProtoLens.Encoding.Parser
+
+-- | Constructs a strict 'ByteString' from the given 'Builder'.
+runBuilder :: Builder -> ByteString
+runBuilder = L.toStrict . Builder.toLazyByteString
+
+-- | Emit a given @ByteString@.
+putBytes :: ByteString -> Builder
+putBytes = Builder.byteString
+
 -- VarInts are inherently unsigned; there are different ways of encoding
 -- negative numbers for int32/64 and sint32/64.
 getVarInt :: Parser Word64
-getVarInt = loop 1 0
+getVarInt = loopStart 0 1
   where
-    loop !s !n = do
-        b <- anyWord8
-        let n' = n + s * fromIntegral (b .&. 127)
-        if (b .&. 128) == 0
-            then return $! n'
-            else loop (128*s) n'
+    loopStart !n !s = getWord8 >>= getVarIntLoopFinish loopStart n s
 
--- | Little-endian decoding function.
-anyBits :: forall a . (Num a, FiniteBits a) => Parser a
-anyBits = loop 0 0
-  where
-    size = finiteBitSize (undefined :: a)
-    loop !w !n
-        | n >= size = return w
-        | otherwise = do
-            b <- anyWord8
-            loop (w .|. shiftL (fromIntegral b) n) (n+8)
+-- Same as getVarInt but reads from a Handle
+getVarIntH :: Handle -> ExceptT String IO Word64
+getVarIntH h = do
+    buf <- liftIO malloc
+    let loopStart !n !s =
+          liftIO (hGetBuf h buf 1) >>=
+          \case
+            1 -> liftIO (peek buf) >>=
+                 getVarIntLoopFinish loopStart n s
+            _ -> throwE "Unexpected end of file"
+    res <- loopStart 0 1
+    liftIO $ free buf
+    return res
 
+getVarIntLoopFinish
+  :: (Monad m)
+  => (Word64 -> Word64 -> m Word64) -- "loop start" callback
+  -> Word64
+  -> Word64
+  -> Word8
+  -> m Word64
+getVarIntLoopFinish ls !n !s !b = do
+    let n' = decodeVarIntStep n s b
+    if testMsb b
+      then ls n' (128*s)
+      else return $! n'
+
+-- n -- result of previous step; s -- 128^{step index}; b -- step byte
+decodeVarIntStep :: Word64 -> Word64 -> Word8 -> Word64
+decodeVarIntStep n s b = n + s * fromIntegral (b .&. 127)
+
+testMsb :: Word8 -> Bool
+testMsb b = (b .&. 128) /= 0
+
 putVarInt :: Word64 -> Builder
 putVarInt n
     | n < 128 = Builder.word8 (fromIntegral n)
-    | otherwise = Builder.word8 (fromIntegral $ n .&. 127 .|. 128)
+    | otherwise = Builder.word8 (fromIntegral $ n .|. 128)
                       <> putVarInt (n `shiftR` 7)
 
+getFixed32 :: Parser Word32
+getFixed32 = getWord32le
+
+getFixed64 :: Parser Word64
+getFixed64 = do
+    x <- getFixed32
+    y <- getFixed32
+    return $ fromIntegral y `shiftL` 32 + fromIntegral x
+
+-- Note: putFixed32 and putFixed32 have added BangPatterns over the
+-- standard Builders.
+-- This works better when they're composed with other functions.
+-- For example, consider `putFixed32 . floatToWord`.
+-- Since `putFixed32` may return a continuation, it doesn't automatically
+-- force the result of `floatToWord`, so the resulting Word32 must be kept
+-- lazily.  The extra strictness means that the Word32 will be evaluated
+-- outside of the continuation, and GHC can pass it around unboxed.
+
+putFixed32 :: Word32 -> Builder
+putFixed32 !x = word32LE x
+
+putFixed64 :: Word64 -> Builder
+putFixed64 !x = word64LE x
+
+#if MIN_VERSION_base(4,11,0)
+wordToDouble :: Word64 -> Double
+wordToDouble = Float.castWord64ToDouble
+
+wordToFloat :: Word32 -> Float
+wordToFloat = Float.castWord32ToFloat
+
+doubleToWord :: Double -> Word64
+doubleToWord = Float.castDoubleToWord64
+
+floatToWord :: Float -> Word32
+floatToWord = Float.castFloatToWord32
+
+#else
 -- WARNING: SUPER UNSAFE!
 -- Helper function purely for converting between Word32/Word64 and
 -- Float/Double.  Note that ideally we could just use unsafeCoerce, but this
@@ -88,6 +193,7 @@
 
 floatToWord :: Float -> Word32
 floatToWord = cast
+#endif
 
 signedInt32ToWord :: Int32 -> Word32
 signedInt32ToWord n = fromIntegral $ shiftL n 1 `xor` shiftR n 31
@@ -102,3 +208,30 @@
 wordToSignedInt64 :: Word64 -> Int64
 wordToSignedInt64 n
     = fromIntegral (shiftR n 1) `xor` negate (fromIntegral $ n .&. 1)
+
+runEither :: Either String a -> Parser a
+runEither = either fail return
+
+-- | Loop over the elements of a vector and concatenate the resulting
+-- @Builder@s.
+--
+-- This function has been hand-tuned to perform better than a naive
+-- implementation using, e.g., Vector.foldr or a manual loop.
+foldMapBuilder :: V.Vector v a => (a -> Builder) -> v a -> Builder
+foldMapBuilder f = \v0 -> Internal.builder (loop v0)
+    -- Place v0 on the right-hand side so that GHC actually inlines
+    -- this function.
+  where
+    -- Fully-saturate the inner loop (rather than currying away `cont`
+    -- and `bs`) to avoid GHC creating an intermediate continuation.
+    loop v cont bs
+        | V.null v = cont bs
+        | otherwise = let
+            !x = V.unsafeHead v
+            -- lts-8.24 (ghc-8.0) doesn't inline unsafeTail well.
+            -- We can remove the following bang when we bump the lower bound:
+            !xs = V.unsafeTail v
+            in Internal.runBuilderWith
+                        (f x)
+                        (loop xs cont) bs
+{-# INLINE foldMapBuilder #-}
diff --git a/src/Data/ProtoLens/Encoding/Growing.hs b/src/Data/ProtoLens/Encoding/Growing.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Encoding/Growing.hs
@@ -0,0 +1,70 @@
+-- | A mutable vector that grows in size.
+--
+-- Example usage:
+--
+-- > import qualified Data.ProtoLens.Encoding.Growing as Growing
+-- > import qualified Data.Vector.Unboxed as V
+-- > test :: IO (V.Vector Int)
+-- > test = do
+-- >     v <- Growing.new
+-- >     v' <- Growing.append v 1
+-- >     v'' <- Growing.append v' 2
+-- >     v''' <- Growing.append v'' 3
+-- >     unsafeFreeze v'''
+module Data.ProtoLens.Encoding.Growing (
+    Growing,
+    new,
+    append,
+    unsafeFreeze,
+    RealWorld,
+    ) where
+
+import Control.Monad.Primitive (PrimMonad, PrimState, RealWorld)
+
+import qualified Data.Vector.Generic as V
+import qualified Data.Vector.Generic.Mutable as MV
+
+-- | A mutable vector which can increase in capacity.
+data Growing v s a = Growing
+    {-# UNPACK #-} !Int
+        -- The number of elements in the mutable vector
+        -- that have already been set.
+    !(V.Mutable v s a)
+        -- TODOs for efficiency:
+        -- - Try unpacking this.  It's difficult as-is because
+        --   V.Mutable is a type function.
+        -- - MVectors support slicing, but we're not using that
+        --   functionality, so we're passing around an extra unnecessary
+        --   Int.
+
+-- | Create a new empty growing vector.
+new :: (PrimMonad m, V.Vector v a) => m (Growing v (PrimState m) a)
+new = Growing 0 <$> MV.new 0
+
+-- | Unsafely convert a growing vector to an immutable one without
+-- copying.  After this call, you may not use the growing vector
+-- nor any other growing vectors that were used to produce this one.
+unsafeFreeze
+    :: (PrimMonad m, V.Vector v a)
+    => Growing v (PrimState m) a -> m (v a)
+unsafeFreeze (Growing len m) = V.unsafeFreeze (MV.take len m)
+
+-- | Returns a new growing vector with a new element at the end.
+-- Note that the return value may share storage with the input value.
+-- Furthermore, calling @append@ twice on the same input may result
+-- in two vectors that share the same storage.
+append
+    :: (PrimMonad m, V.Vector v a)
+    => Growing v (PrimState m) a
+    -> a
+    -> m (Growing v (PrimState m) a)
+append (Growing len v) x
+    | len < MV.length v = do
+        MV.unsafeWrite v len x
+        return $ Growing (len + 1) v
+    | otherwise = do
+        let len' = 2 * len + 1
+        v' <- MV.unsafeGrow v len'
+        MV.unsafeWrite v' len x
+        return $ Growing (len + 1) v'
+{-# INLINE append #-}
diff --git a/src/Data/ProtoLens/Encoding/Parser.hs b/src/Data/ProtoLens/Encoding/Parser.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Encoding/Parser.hs
@@ -0,0 +1,120 @@
+-- | A custom parsing monad, optimized for speed.
+{-# LANGUAGE RankNTypes #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+module Data.ProtoLens.Encoding.Parser
+    ( Parser
+    , runParser
+    , atEnd
+    , isolate
+    , getWord8
+    , getWord32le
+    , getBytes
+    , getText
+    , (<?>)
+    ) where
+
+import Data.Bits (shiftL, (.|.))
+import Data.Word (Word8, Word32)
+import Data.ByteString (ByteString, packCStringLen)
+import qualified Data.ByteString.Unsafe as B
+import Data.Text (Text)
+import Data.Text.Encoding (decodeUtf8')
+import Foreign.Ptr
+import Foreign.Storable
+import System.IO.Unsafe (unsafePerformIO)
+
+import Data.ProtoLens.Encoding.Parser.Internal
+
+-- | Evaluates a parser on the given input.
+--
+-- If the parser does not consume all of the input, the rest of the
+-- input is discarded and the parser still succeeds.  Parsers may use
+-- 'atEnd' to detect whether they are at the end of the input.
+--
+-- Values returned from actions in this monad will not hold onto the original
+-- ByteString, but rather make immutable copies of subsets of its bytes.
+runParser :: Parser a -> ByteString -> Either String a
+runParser (Parser m) b =
+    case unsafePerformIO $ B.unsafeUseAsCStringLen b
+            $ \(p, len) -> m (p `plusPtr` len) (castPtr p) of
+        ParseSuccess _ x -> Right x
+        ParseFailure s -> Left s
+
+-- | Returns True if there is no more input left to consume.
+atEnd :: Parser Bool
+atEnd = Parser $ \end pos -> return $ ParseSuccess pos (pos == end)
+
+-- | Parse a one-byte word.
+getWord8 :: Parser Word8
+getWord8 = withSized 1 "getWord8: Unexpected end of input" peek
+
+-- | Parser a 4-byte word in little-endian order.
+getWord32le :: Parser Word32
+getWord32le = withSized 4 "getWord32le: Unexpected end of input" $ \pos -> do
+    b1 <- fromIntegral <$> peek pos
+    b2 <- fromIntegral <$> peek (pos `plusPtr'` 1)
+    b3 <- fromIntegral <$> peek (pos `plusPtr'` 2)
+    b4 <- fromIntegral <$> peek (pos `plusPtr'` 3)
+    let f b b' = b `shiftL` 8 .|. b'
+    return $! f (f (f b4 b3) b2) b1
+
+-- | Parse a sequence of zero or more bytes of the given length.
+--
+-- The new ByteString is an immutable copy of the bytes in the input
+-- and will be managed separately on the Haskell heap from the original
+-- input 'ByteString'.
+--
+-- Fails the parse if given a negative length.
+getBytes :: Int -> Parser ByteString
+getBytes n = withSized n "getBytes: Unexpected end of input"
+                    $ \pos -> packCStringLen (castPtr pos, n)
+
+getText :: Int -> Parser Text
+getText n = do
+  r <- withSized n "getText: Unexpected end of input" $ \pos ->
+          decodeUtf8' <$> B.unsafePackCStringLen (castPtr pos, n)
+  either (fail . show) pure r
+
+-- | Helper function for reading bytes from the current position and
+-- advancing the pointer.
+--
+-- Fails the parse if given a negative length.  (GHC will elide the check
+-- if the length is a nonnegative constant.)
+--
+-- It is only safe for @f@ to peek between its argument @p@ and
+-- @p `plusPtr` (len - 1)@, inclusive.
+withSized :: Int -> String -> (Ptr Word8 -> IO a) -> Parser a
+withSized len message f
+    | len >= 0 = Parser $ \end pos ->
+        let pos' = pos `plusPtr'` len
+        in if pos' > end
+            then return $ ParseFailure message
+            else ParseSuccess pos' <$> f pos
+    | otherwise = fail "withSized: negative length"
+{-# INLINE withSized #-}
+
+-- | Run the given parsing action as if there are only
+-- @len@ bytes remaining.  That is, once @len@ bytes have been
+-- consumed, 'atEnd' will return 'True' and other actions
+-- like 'getWord8' will act like there is no input remaining.
+--
+-- Fails the parse if given a negative length.
+isolate :: Int -> Parser a -> Parser a
+isolate len (Parser m)
+    | len >= 0 = Parser $ \end pos ->
+        let end' = pos `plusPtr` len
+        in if end' > end
+            then return $ ParseFailure "isolate: unexpected end of input"
+            else m end' pos
+    | otherwise = fail "isolate: negative length"
+
+-- | If the parser fails, prepend an error message.
+(<?>) :: Parser a -> String -> Parser a
+Parser m <?> msg = Parser $ \end p -> wrap <$> m end p
+  where
+    wrap (ParseFailure s) = ParseFailure (msg ++ ": " ++ s)
+    wrap r = r
+
+-- | Advance a pointer.  Unlike 'plusPtr', preserves the type of the input.
+plusPtr' :: Ptr a -> Int -> Ptr a
+plusPtr' = plusPtr
diff --git a/src/Data/ProtoLens/Encoding/Parser/Internal.hs b/src/Data/ProtoLens/Encoding/Parser/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Encoding/Parser/Internal.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE LambdaCase #-}
+-- | Definition of the parsing monad, plus internal
+-- unsafe functions.
+module Data.ProtoLens.Encoding.Parser.Internal
+    ( Parser(..)
+    , ParseResult(..)
+    ) where
+
+import Control.Monad (ap)
+import qualified Control.Monad.Fail as Fail
+import Data.Word (Word8)
+import Foreign.Ptr
+
+-- | A monad for parsing an input buffer.
+newtype Parser a = Parser
+    { unParser :: Ptr Word8 -- End position of the input
+               -> Ptr Word8 -- Current position in the input
+               -> IO (ParseResult a)
+    }
+
+data ParseResult a
+    = ParseSuccess
+        { _newPos :: !(Ptr Word8) -- ^ New position in the input
+        , unParserResult :: a
+        }
+    | ParseFailure String
+
+instance Functor ParseResult where
+    fmap f (ParseSuccess p x) = ParseSuccess p (f x)
+    fmap _ (ParseFailure s) = ParseFailure s
+
+instance Functor Parser where
+    fmap f (Parser g) = Parser $ \end cur -> fmap f <$> g end cur
+
+instance Applicative Parser where
+    pure x = Parser $ \_ cur -> return $ ParseSuccess cur x
+    (<*>) = ap
+
+instance Monad Parser where
+#if !MIN_VERSION_base(4,13,0)
+    fail = Fail.fail
+#endif
+    return = pure
+    Parser f >>= g = Parser $ \end pos -> f end pos >>= \case
+        ParseSuccess pos' x -> unParser (g x) end pos'
+        ParseFailure s -> return $ ParseFailure s
+
+instance Fail.MonadFail Parser where
+    fail s = Parser $ \_ _ -> return $ ParseFailure s
diff --git a/src/Data/ProtoLens/Encoding/Parser/Unsafe.hs b/src/Data/ProtoLens/Encoding/Parser/Unsafe.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Encoding/Parser/Unsafe.hs
@@ -0,0 +1,21 @@
+module Data.ProtoLens.Encoding.Parser.Unsafe
+    ( unsafeLiftIO ) where
+
+import Data.ProtoLens.Encoding.Parser.Internal
+
+-- | Runs an arbitrary @IO@ action inside a @Parser@.
+-- The generated code uses this function to construct vectors
+-- efficiently by incrementally building up mutable vectors.
+--
+-- NOTE: This is unsafe since @runParser@
+-- is a pure function, which lets us lift arbitrary IO into
+-- pure operations.
+-- However, here are some guarantees that we do get:
+--
+-- - For each individual call to 'runParser', the action
+--   wrapped by 'unsafeLiftIO' will be called exactly once.
+-- - Different calls to 'unsafeLiftIO' within the same call to
+--   'runParser' will be sequenced according to their order in the Parser
+--   monad.
+unsafeLiftIO :: IO a -> Parser a
+unsafeLiftIO m = Parser $ \_ p -> ParseSuccess p <$> m
diff --git a/src/Data/ProtoLens/Encoding/Wire.hs b/src/Data/ProtoLens/Encoding/Wire.hs
--- a/src/Data/ProtoLens/Encoding/Wire.hs
+++ b/src/Data/ProtoLens/Encoding/Wire.hs
@@ -1,72 +1,57 @@
--- Copyright 2016 Google Inc. All Rights Reserved.
+-- | Module defining the individual base wire types (e.g. VarInt, Fixed64).
 --
--- Use of this source code is governed by a BSD-style
--- license that can be found in the LICENSE file or at
--- https://developers.google.com/open-source/licenses/bsd
-
-{-# LANGUAGE GADTs #-}
+-- They are used to represent the @unknownFields@ within the proto message.
+--
+-- Upstream docs:
+-- <https://developers.google.com/protocol-buffers/docs/encoding#structure>
+{-# LANGUAGE BangPatterns #-}
+{-# LANGUAGE CPP #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
-{-# LANGUAGE PatternGuards #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE RankNTypes #-}
--- | Module defining the individual base wire types (e.g. VarInt, Fixed64) and
--- how to encode/decode them.
-module Data.ProtoLens.Encoding.Wire(
-    WireType(..),
-    SomeWireType(..),
-    WireValue(..),
-    Tag(..),
-    TaggedValue(..),
-    getTaggedValue,
-    putTaggedValue,
-    getWireValue,
-    putWireValue,
-    Equal(..),
-    equalWireTypes,
-    decodeFieldSet,
+module Data.ProtoLens.Encoding.Wire
+    ( Tag(..)
+    , TaggedValue(..)
+    , WireValue(..)
+    , FieldSet
+    , splitTypeAndTag
+    , joinTypeAndTag
+    , parseFieldSet
+    , buildFieldSet
+    , buildMessageSet
+    , parseTaggedValueFromWire
+    , parseMessageSetTaggedValueFromWire
     ) where
 
 import Control.DeepSeq (NFData(..))
-import Data.Attoparsec.ByteString as Parse
-import Data.Bits
+import Data.Bits ((.&.), (.|.), shiftL, shiftR)
 import qualified Data.ByteString as B
-import Data.ByteString.Lazy.Builder as Builder
-import Data.Monoid ((<>))
-import Data.Word
+#if !MIN_VERSION_base(4,11,0)
+import Data.Semigroup ((<>))
+#endif
+import Data.Word (Word8, Word32, Word64)
 
 import Data.ProtoLens.Encoding.Bytes
 
-data WireType a where
-    -- Note: all of these types are fully strict (vs, say,
-    -- Data.ByteString.Lazy.ByteString).  If that changes, we'll
-    -- need to update the NFData instance.
-    VarInt :: WireType Word64
-    Fixed64 :: WireType Word64
-    Fixed32 :: WireType Word32
-    Lengthy :: WireType B.ByteString
-    StartGroup :: WireType ()
-    EndGroup :: WireType ()
-
-instance Show (WireType a) where
-    show = show . wireTypeToInt
-
-
--- A value read from the wire
-data WireValue = forall a . WireValue !(WireType a) !a
-
-instance Show WireValue where
-    show (WireValue VarInt x) = show x
-    show (WireValue Fixed64 x) = show x
-    show (WireValue Fixed32 x) = show x
-    show (WireValue Lengthy x) = show x
-    show (WireValue StartGroup x) = show x
-    show (WireValue EndGroup x) = show x
+-- | A tag that identifies a particular field of the message when converting
+-- to/from the wire format.
+newtype Tag = Tag { unTag :: Int }
+    deriving (Show, Eq, Ord, Num, NFData)
 
+-- | The encoding of some unknown field on the wire.
+data WireValue
+    = VarInt !Word64
+    | Fixed64 !Word64
+    | Lengthy !B.ByteString
+    | StartGroup
+    | EndGroup
+    | Fixed32 !Word32
+    deriving (Eq, Ord)
 
--- The wire contents of a single key-value pair in a Message.
+-- | A pair of an encoded field and a value.
 data TaggedValue = TaggedValue !Tag !WireValue
-    deriving (Show, Eq, Ord)
+    deriving (Eq, Ord)
 
+type FieldSet = [TaggedValue]
+
 -- TaggedValue, WireValue and Tag are strict, so their NFData instances are
 -- trivial:
 instance NFData TaggedValue where
@@ -75,98 +60,86 @@
 instance NFData WireValue where
     rnf = (`seq` ())
 
--- | A tag that identifies a particular field of the message when converting
--- to/from the wire format.
-newtype Tag = Tag { unTag :: Int}
-    deriving (Show, Eq, Ord, Num, NFData)
-
-data Equal a b where
-    -- TODO: move Eq/Ord instance somewhere else?
-    Equal :: (Eq a, Ord a) => Equal a a
-
--- Assert that two wire types are the same, or fail with a message about this
--- field.
-{-# INLINE equalWireTypes #-}
-equalWireTypes :: Monad m => WireType a -> WireType b
-               -> m (Equal a b)
-equalWireTypes VarInt VarInt = return Equal
-equalWireTypes Fixed64 Fixed64 = return Equal
-equalWireTypes Fixed32 Fixed32 = return Equal
-equalWireTypes Lengthy Lengthy = return Equal
-equalWireTypes StartGroup StartGroup = return Equal
-equalWireTypes EndGroup EndGroup = return Equal
-equalWireTypes expected actual
-    = fail $ "Expected wire type " ++ show expected
-        ++ " but found " ++ show actual
-
-instance Eq WireValue where
-    WireValue t v == WireValue t' v'
-        | Just Equal <- equalWireTypes t t'
-            = v == v'
-        | otherwise = False
+buildTaggedValue :: TaggedValue -> Builder
+buildTaggedValue (TaggedValue tag wv) =
+    putVarInt (joinTypeAndTag tag (wireValueToInt wv))
+    <> buildWireValue wv
 
-instance Ord WireValue where
-    WireValue t v `compare` WireValue t' v'
-        | Just Equal <- equalWireTypes t t'
-            = v `compare` v'
-        | otherwise = wireTypeToInt t `compare` wireTypeToInt t'
+-- builds in legacy MessageSet format.
+-- See https://github.com/protocolbuffers/protobuf/blob/dec4939439d9ca2adf2bb14edccf876c2587faf2/src/google/protobuf/descriptor.proto#L444
+buildTaggedValueAsMessageSet :: TaggedValue -> Builder
+buildTaggedValueAsMessageSet (TaggedValue (Tag t) wv) =
+    buildTaggedValue ( TaggedValue 1 StartGroup)
+    <> buildTaggedValue (TaggedValue 2 (VarInt $ fromIntegral t))
+    <> buildTaggedValue (TaggedValue 3 wv)
+    <> buildTaggedValue (TaggedValue 1 EndGroup)
 
-getWireValue :: WireType a -> Parser a
-getWireValue VarInt = getVarInt
-getWireValue Fixed64 = anyBits
-getWireValue Fixed32 = anyBits
-getWireValue Lengthy = getVarInt >>= Parse.take . fromIntegral
-getWireValue StartGroup = return ()
-getWireValue EndGroup = return ()
+buildWireValue :: WireValue -> Builder
+buildWireValue (VarInt w) = putVarInt w
+buildWireValue (Fixed64 w) = putFixed64 w
+buildWireValue (Fixed32 w) = putFixed32 w
+buildWireValue (Lengthy b) =
+    putVarInt (fromIntegral $ B.length b)
+    <> putBytes b
+buildWireValue StartGroup = mempty
+buildWireValue EndGroup = mempty
 
-putWireValue :: WireType a -> a -> Builder
-putWireValue VarInt n = putVarInt n
-putWireValue Fixed64 n = word64LE n
-putWireValue Fixed32 n = word32LE n
-putWireValue Lengthy b = putVarInt (fromIntegral $ B.length b) <> byteString b
-putWireValue StartGroup _ = mempty
-putWireValue EndGroup _ = mempty
+wireValueToInt :: WireValue -> Word8
+wireValueToInt VarInt{} = 0
+wireValueToInt Fixed64{} = 1
+wireValueToInt Lengthy{} = 2
+wireValueToInt StartGroup{} = 3
+wireValueToInt EndGroup{} = 4
+wireValueToInt Fixed32{} = 5
 
-data SomeWireType where
-    SomeWireType :: WireType a -> SomeWireType
+parseTaggedValue :: Parser TaggedValue
+parseTaggedValue = getVarInt >>= parseTaggedValueFromWire
 
-wireTypeToInt :: WireType a -> Word64
-wireTypeToInt VarInt = 0
-wireTypeToInt Fixed64 = 1
-wireTypeToInt Lengthy = 2
-wireTypeToInt StartGroup = 3
-wireTypeToInt EndGroup = 4
-wireTypeToInt Fixed32 = 5
+parseTaggedValueFromWire :: Word64 -> Parser TaggedValue
+parseTaggedValueFromWire t =
+    let (tag, w) = splitTypeAndTag t
+    in TaggedValue tag <$> case w of
+        0 -> VarInt <$> getVarInt
+        1 -> Fixed64 <$> getFixed64
+        2 -> Lengthy <$> do
+                len <- getVarInt
+                getBytes $ fromIntegral len
+        3 -> return StartGroup
+        4 -> return EndGroup
+        5 -> Fixed32 <$> getFixed32
+        _ -> fail $ "Unknown wire type " ++ show w
 
-intToWireType :: Word64 -> Either String SomeWireType
-intToWireType 0 = Right $ SomeWireType VarInt
-intToWireType 1 = Right $ SomeWireType Fixed64
-intToWireType 2 = Right $ SomeWireType Lengthy
-intToWireType 3 = Right $ SomeWireType StartGroup
-intToWireType 4 = Right $ SomeWireType EndGroup
-intToWireType 5 = Right $ SomeWireType Fixed32
-intToWireType n = Left $ "Unrecognized wire type " ++ show n
+parseMessageSetTaggedValueFromWire :: Word64 -> Parser TaggedValue
+parseMessageSetTaggedValueFromWire t =
+    parseTaggedValueFromWire t >>= \v -> case v of
+        TaggedValue 1 StartGroup -> parseTaggedValue >>= \ft -> case ft of
+            TaggedValue 2 (VarInt f) -> parseTaggedValue >>= \dt -> case dt of
+                TaggedValue 3 (Lengthy b) -> parseTaggedValue >>= \et -> case et of
+                    TaggedValue 1 EndGroup -> return $ TaggedValue (Tag $ fromIntegral f) (Lengthy b)
+                    _ -> fail "missing end_group"
+                _ -> fail "missing message"
+            _ -> fail "missing field tag"
+        _ -> return v
 
-putTypeAndTag :: WireType a -> Tag -> Builder
-putTypeAndTag wt (Tag tag)
-    = putVarInt $ wireTypeToInt wt .|. fromIntegral tag `shiftL` 3
+splitTypeAndTag :: Word64 -> (Tag, Word8)
+splitTypeAndTag w = (fromIntegral $ w `shiftR` 3, fromIntegral (w .&. 7))
 
-getTypeAndTag :: Parser (SomeWireType, Tag)
-getTypeAndTag = do
-  n <- getVarInt
-  case intToWireType (n .&. 7) of
-    Left err -> fail err
-    Right wt -> return (wt, fromIntegral $ n `shiftR` 3)
+joinTypeAndTag :: Tag -> Word8 -> Word64
+joinTypeAndTag (Tag t) w = fromIntegral t `shiftL` 3 .|. fromIntegral w
 
-getTaggedValue :: Parser TaggedValue
-getTaggedValue = do
-    (SomeWireType wt, tag) <- getTypeAndTag
-    val <- getWireValue wt
-    return $ TaggedValue tag (WireValue wt val)
+parseFieldSet :: Parser FieldSet
+parseFieldSet = loop []
+  where
+    loop ws = do
+        end <- atEnd
+        if end
+            then return $! reverse ws
+            else do
+                !w <- parseTaggedValue
+                loop (w:ws)
 
-putTaggedValue :: TaggedValue -> Builder
-putTaggedValue (TaggedValue tag (WireValue wt val)) =
-    putTypeAndTag wt tag <> putWireValue wt val
+buildFieldSet :: FieldSet -> Builder
+buildFieldSet = mconcat . map buildTaggedValue 
 
-decodeFieldSet :: B.ByteString -> Either String [TaggedValue]
-decodeFieldSet = parseOnly (manyTill getTaggedValue endOfInput)
+buildMessageSet :: FieldSet -> Builder
+buildMessageSet = mconcat . map buildTaggedValueAsMessageSet
diff --git a/src/Data/ProtoLens/Field.hs b/src/Data/ProtoLens/Field.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Field.hs
@@ -0,0 +1,42 @@
+{- | An implementation of overloaded record fields.  This module
+enables different types in the same module to have fields of the
+same name.
+
+To use instances from this class, either:
+
+* Enable the @OverloadedLabels@ extension and
+  @import Data.ProtoLens.Labels ()@;
+* Use the 'field' function along with the @TypeApplications@ extension; or,
+* Import the corresponding names from the autogenerated @*_Fields@ module.
+
+For more information, see <https://google.github.io/proto-lens/tutorial.html#field-overloading>.
+-}
+{-# LANGUAGE AllowAmbiguousTypes #-}
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE FunctionalDependencies #-}
+{-# LANGUAGE KindSignatures #-}
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE UndecidableInstances #-}
+{-# LANGUAGE ScopedTypeVariables #-}
+module Data.ProtoLens.Field
+    ( HasField(..)
+    , field
+    ) where
+
+import GHC.Prim (Proxy#, proxy#)
+import GHC.TypeLits (Symbol)
+
+-- | A lens for a given field.  For example:
+--
+-- > view field@"abc" x
+-- > set field@"abc" 42 x
+field :: forall x s a f . (HasField s x a, Functor f) => (a -> f a) -> s -> f s
+field = fieldOf (proxy# :: Proxy# x)
+
+-- | A type class for lens fields.
+--
+-- The instance @HasField s x a@ can be understood as "@s@ has a field named @x@
+-- of type @a@".
+class HasField s (x :: Symbol) a | s x -> a where
+    fieldOf :: Functor f => Proxy# x -> (a -> f a) -> s -> f s
diff --git a/src/Data/ProtoLens/Labels.hs b/src/Data/ProtoLens/Labels.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Labels.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE CPP #-}
+{-# LANGUAGE FlexibleInstances #-}
+{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE MultiParamTypeClasses #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE TypeOperators #-}
+{-# LANGUAGE UndecidableInstances #-}
+#if __GLASGOW_HASKELL__ >= 802
+{-# LANGUAGE ScopedTypeVariables #-}
+#endif
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+
+------------------------------------------------------------------------------
+-- | This module provides OverloadedLabels 'IsLabel' support via an
+-- orphan instance. This means a @Lens.Family.Lens@ can be referenced
+-- as @#foo@ whenever we have an instance of 'Data.ProtoLens.Field.HasField'
+-- with the label @"foo"@."
+--
+-- To use these labels, enable the @OverloadedLabels@ extension, and then
+-- import:
+--
+-- > import Data.ProtoLens.Labels()
+module Data.ProtoLens.Labels where
+
+import GHC.OverloadedLabels (IsLabel (..))
+#if __GLASGOW_HASKELL__ >= 802
+import GHC.Prim (Proxy#, proxy#)
+#endif
+
+import Data.ProtoLens.Field (HasField(..))
+
+instance (HasField s x a, p ~ (a -> f a), q ~ (s -> f s), Functor f,
+        a ~ b) => IsLabel x (p -> q) where
+#if __GLASGOW_HASKELL__ >= 802
+  fromLabel = fieldOf (proxy# :: Proxy# x)
+#else
+  fromLabel x = fieldOf x
+#endif
diff --git a/src/Data/ProtoLens/Message.hs b/src/Data/ProtoLens/Message.hs
--- a/src/Data/ProtoLens/Message.hs
+++ b/src/Data/ProtoLens/Message.hs
@@ -29,7 +29,7 @@
     MessageOrGroup(..),
     FieldDefault(..),
     MessageEnum(..),
-    -- * Building protocol buffers
+    -- * Constructing protocol buffers
     build,
     -- * Proto registries
     Registry,
@@ -61,6 +61,7 @@
 import Lens.Family2.Unchecked (lens)
 import qualified Data.Semigroup as Semigroup
 
+import Data.ProtoLens.Encoding.Bytes (Builder, Parser)
 import Data.ProtoLens.Encoding.Wire
     ( Tag(..)
     , TaggedValue(..)
@@ -74,6 +75,20 @@
     -- @"packagename.messagename"@.
     messageName :: Proxy msg -> T.Text
 
+    -- | The serialized protobuffer message descriptor for this type.
+    --
+    -- For a friendlier version which returns the actual descriptor type,
+    -- use @Data.ProtoLens.Descriptor.messageDescriptor@
+    -- from the @proto-lens-protobuf-types@ package.
+    packedMessageDescriptor :: Proxy msg -> B.ByteString
+
+    -- | The serialized protobuffer file message descriptor containing this type.
+    --
+    -- For a friendlier version which returns the actual file descriptor type,
+    -- use @Data.ProtoLens.Descriptor.fileDescriptor@
+    -- from the @proto-lens-protobuf-types@ package.
+    packedFileDescriptor :: Proxy msg -> B.ByteString
+
     -- | A message with all fields set to their default values.
     --
     -- Satisfies @encodeMessage defMessage == ""@ and @decodeMessage "" == Right defMessage@.
@@ -94,9 +109,20 @@
     -- | Access the unknown fields of a Message.
     unknownFields :: Lens' msg FieldSet
 
+    -- | Decode a message value.
+    --
+    -- See also the functions in "Data.ProtoLens.Encoding".
+    parseMessage :: Parser msg
+
+    -- | Encode a message value.
+    --
+    -- See also the functions in "Data.ProtoLens.Encoding".
+    buildMessage :: msg -> Builder
+
 allFields :: Message msg => [FieldDescriptor msg]
 allFields = Map.elems fieldsByTag
 
+-- TODO: represent FieldSet as a Vector too.
 type FieldSet = [TaggedValue]
 
 -- | A description of a specific field of a protocol buffer.
@@ -180,7 +206,6 @@
 
 instance FieldDefault T.Text where
     fieldDefault = T.empty
-
 
 -- | How a given repeated field is transmitted on the wire format.
 data Packing = Packed | Unpacked
diff --git a/src/Data/ProtoLens/Prism.hs b/src/Data/ProtoLens/Prism.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/ProtoLens/Prism.hs
@@ -0,0 +1,80 @@
+-- Copyright 2016 Google Inc. All Rights Reserved.
+--
+-- Use of this source code is governed by a BSD-style
+-- license that can be found in the LICENSE file or at
+-- https://developers.google.com/open-source/licenses/bsd
+
+-- | This module defines the 'Prism' type and combinators. Used for building
+--   'Prism's for oneof fields.
+{-# LANGUAGE RankNTypes #-}
+
+module Data.ProtoLens.Prism
+    ( Prism
+    , Prism'
+    , AReview
+    , (#)
+    , prism
+    , prism'
+    , _Left
+    , _Right
+    , _Just
+    , _Nothing
+    ) where
+
+import  Data.Tagged (Tagged (..))
+import  Data.Functor.Identity (Identity (..))
+import  Data.Profunctor (dimap)
+import  Data.Profunctor.Choice
+import  Data.Profunctor.Unsafe ((#.), (.#))
+
+
+------------------------------------------------------------------------------
+-- Prism Internals
+------------------------------------------------------------------------------
+type Prism s t a b = forall p f. (Choice p, Applicative f) => p a (f b) -> p s (f t)
+
+type Prism' s a = Prism s s a a
+
+type Optic p f s t a b = p a (f b) -> p s (f t)
+
+type Optic' p f s a = Optic p f s s a a
+
+type AReview t b = Optic' Tagged Identity t b
+
+-- | Used for constructing 'Prism' values.
+--
+-- @'_Just' '#' 5 == 'Just' 5@
+( # ) :: AReview t b -> b -> t
+( # ) p = runIdentity #. unTagged #. p .# Tagged .# Identity
+infixr 8 #
+
+
+------------------------------------------------------------------------------
+-- Prism Combinators
+------------------------------------------------------------------------------
+
+-- | Build a 'Control.Lens.Prism.Prism'.
+--
+-- @'Either' t a@ is used instead of @'Maybe' a@ to permit the types of @s@ and @t@ to differ.
+--
+prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
+prism bt seta = dimap seta (either pure (fmap bt)) . right'
+{-# INLINE prism #-}
+
+-- | This is usually used to build a 'Prism'', when you have to use an operation like
+-- 'Data.Typeable.cast' which already returns a 'Maybe'.
+prism' :: (b -> s) -> (s -> Maybe a) -> Prism s s a b
+prism' bs sma = prism bs (\s -> maybe (Left s) Right (sma s))
+{-# INLINE prism' #-}
+
+_Left :: Prism (Either a c) (Either b c) a b
+_Left = prism Left $ either Right (Left . Right)
+
+_Right :: Prism (Either c a) (Either c b) a b
+_Right = prism Right $ either (Left . Left) Right
+
+_Just :: Prism (Maybe a) (Maybe b) a b
+_Just = prism Just $ maybe (Left Nothing) Right
+
+_Nothing :: Prism' (Maybe a) ()
+_Nothing = prism' (const Nothing) $ maybe (Just ()) (const Nothing)
diff --git a/src/Data/ProtoLens/Service/Types.hs b/src/Data/ProtoLens/Service/Types.hs
--- a/src/Data/ProtoLens/Service/Types.hs
+++ b/src/Data/ProtoLens/Service/Types.hs
@@ -3,7 +3,6 @@
 {-# LANGUAGE FlexibleContexts      #-}
 {-# LANGUAGE FlexibleInstances     #-}
 {-# LANGUAGE GADTs                 #-}
-{-# LANGUAGE KindSignatures        #-}
 {-# LANGUAGE MultiParamTypeClasses #-}
 {-# LANGUAGE PolyKinds             #-}
 {-# LANGUAGE RankNTypes            #-}
@@ -23,8 +22,10 @@
   , StreamingType (..)
   ) where
 
-import Data.Kind (Constraint)
+import qualified Data.ByteString as B
+import Data.Kind (Constraint, Type)
 import Data.ProtoLens.Message (Message)
+import Data.Proxy (Proxy(..))
 import GHC.TypeLits
 
 
@@ -53,6 +54,7 @@
   type ServicePackage s :: Symbol
   type ServiceMethods s :: [Symbol]
 
+  packedServiceDescriptor :: Proxy s -> B.ByteString
 
 ------------------------------------------------------------------------------
 -- | Data type to be used as a promoted type for 'MethodStreamingType'.
@@ -82,8 +84,8 @@
       , Message (MethodOutput s m)
       ) => HasMethodImpl s (m :: Symbol) where
   type MethodName          s m :: Symbol
-  type MethodInput         s m :: *
-  type MethodOutput        s m :: *
+  type MethodInput         s m :: Type
+  type MethodOutput        s m :: Type
   type MethodStreamingType s m :: StreamingType
 
 
diff --git a/src/Data/ProtoLens/TextFormat.hs b/src/Data/ProtoLens/TextFormat.hs
--- a/src/Data/ProtoLens/TextFormat.hs
+++ b/src/Data/ProtoLens/TextFormat.hs
@@ -28,11 +28,11 @@
 import Data.Bifunctor (first)
 import qualified Data.ByteString
 import Data.Char (isPrint, isAscii, chr)
-import Data.Foldable (foldlM, foldl')
+import Data.Foldable (foldlM)
+import qualified Data.Foldable as F
 import qualified Data.Map as Map
 import Data.Maybe (catMaybes)
 import Data.Proxy (Proxy(Proxy))
-import Data.ProtoLens.Encoding (encodeMessage, decodeMessage)
 import qualified Data.Set as Set
 import qualified Data.Text.Encoding as Text
 import qualified Data.Text.Lazy as Lazy
@@ -45,8 +45,10 @@
 import Prelude hiding ((<>))
 #endif
 
+import Data.ProtoLens.Encoding (decodeMessage, encodeMessage)
+import Data.ProtoLens.Encoding.Bytes (runParser)
 import Data.ProtoLens.Encoding.Wire
-import Data.ProtoLens.Message
+import Data.ProtoLens.Message hiding (buildMessage, parseMessage)
 import qualified Data.ProtoLens.TextFormat.Parser as Parser
 
 -- TODO: This code is newer and missing some edge cases,
@@ -185,11 +187,11 @@
 boolValue False = text "false"
 
 pprintTaggedValue :: TaggedValue -> Doc
-pprintTaggedValue (TaggedValue t (WireValue v x)) = case v of
-    VarInt -> named name $ primField x
-    Fixed64 -> named name $ primField x
-    Fixed32 -> named name $ primField x
-    Lengthy -> case decodeFieldSet x of
+pprintTaggedValue (TaggedValue t wv) = case wv of
+    VarInt x -> named name $ primField x
+    Fixed64 x -> named name $ primField x
+    Fixed32 x -> named name $ primField x
+    Lengthy x -> case runParser parseFieldSet x of
                   Left _ -> named name $ pprintByteString x
                   Right ts -> pprintSubmessage name
                                 $ sep $ map pprintTaggedValue ts
@@ -199,6 +201,7 @@
   where
     name = show (unTag t)
 
+
 --------------------------------------------------------------------------------
 -- Parsing
 
@@ -226,7 +229,7 @@
                       <$> buildMessageFromDescriptor reg defMessage fields
 
 missingFields :: forall msg . Message msg => Proxy msg -> Parser.Message -> [String]
-missingFields _ = Set.toList . foldl' deleteField requiredFieldNames
+missingFields _ = Set.toList . F.foldl' deleteField requiredFieldNames
   where
     requiredFieldNames :: Set.Set String
     requiredFieldNames = Set.fromList $ Map.keys
@@ -315,8 +318,8 @@
 makeScalarValue DoubleField (Parser.DoubleValue x) = Right x
 makeScalarValue FloatField (Parser.DoubleValue x) = Right (realToFrac x)
 makeScalarValue BoolField (Parser.EnumValue x)
-    | x == "true" = Right True
-    | x == "false" = Right False
+    | x `elem` ["true", "True", "t"] = Right True
+    | x `elem` ["false", "False", "f"] = Right False
     | otherwise = Left $ "Unrecognized bool value " ++ show x
 makeScalarValue StringField (Parser.ByteStringValue x) = Right (Text.decodeUtf8 x)
 makeScalarValue BytesField (Parser.ByteStringValue x) = Right x
diff --git a/src/Data/ProtoLens/TextFormat/Parser.hs b/src/Data/ProtoLens/TextFormat/Parser.hs
--- a/src/Data/ProtoLens/TextFormat/Parser.hs
+++ b/src/Data/ProtoLens/TextFormat/Parser.hs
@@ -6,6 +6,8 @@
 
 -- | Helper utilities to parse the human-readable text format into a
 -- proto-agnostic syntax tree.
+{-# LANGUAGE FlexibleContexts #-}
+
 module Data.ProtoLens.TextFormat.Parser
     ( Message
     , Field(..)
@@ -14,23 +16,23 @@
     , parser
     ) where
 
-import Data.ByteString (ByteString, pack)
-import Data.Char (ord, isSpace)
+import Control.Applicative ((<|>), many)
+import Control.Monad (liftM, liftM2, mzero, unless)
+import Data.ByteString (ByteString)
+import Data.ByteString.Builder (Builder, char8, charUtf8, toLazyByteString, word8)
+import Data.ByteString.Lazy (toStrict)
+import Data.Char (digitToInt, isSpace)
+import Data.Functor (($>))
 import Data.Functor.Identity (Identity)
 import Data.List (intercalate)
-import Data.Maybe (catMaybes)
-import Data.Text.Lazy (Text)
 import qualified Data.Text as StrictText
-import Data.Word (Word8)
-import Numeric (readOct, readHex)
+import Data.Text.Lazy (Text)
 import Text.Parsec ((<?>))
 import Text.Parsec.Char
   (alphaNum, char, hexDigit, letter, octDigit, oneOf, satisfy)
 import Text.Parsec.Text.Lazy (Parser)
-import Text.Parsec.Combinator (choice, eof, many1, optionMaybe, sepBy1)
+import Text.Parsec.Combinator (choice, eof, many1, sepBy1)
 import Text.Parsec.Token hiding (octal)
-import Control.Applicative ((<|>), many)
-import Control.Monad (liftM, liftM2, mzero)
 
 -- | A 'TokenParser' for the protobuf text format.
 ptp :: GenTokenParser Text () Identity
@@ -53,7 +55,6 @@
   , caseSensitive = True
   }
 
-
 type Message = [Field]
 
 data Field = Field Key Value
@@ -101,7 +102,7 @@
         value <- naturalOrFloat ptp
         return $ makeNumberValue negative value
     parseString = liftM (ByteStringValue . mconcat)
-        $ many1 $ lexeme ptp $ protoStringLiteral
+        $ many1 $ lexeme ptp protoStringLiteral
     parseEnumValue = liftM EnumValue (identifier ptp)
     parseMessageValue =
         braces ptp (parseAny <|>
@@ -129,39 +130,43 @@
 protoStringLiteral :: Parser ByteString
 protoStringLiteral = do
     initialQuoteChar <- char '\'' <|> char '\"'
-    word8s <- many stringChar
+    let quoted = do
+          _ <- char '\\'
+          choice
+            [ char 'a'   $> char8 '\a'
+            , char 'b'   $> char8 '\b'
+            , char 'f'   $> char8 '\f'
+            , char 'n'   $> char8 '\n'
+            , char 'r'   $> char8 '\r'
+            , char 't'   $> char8 '\t'
+            , char 'v'   $> char8 '\v'
+            , char '\\'  $> char8 '\\'
+            , char '\''  $> char8 '\''
+            , char '\"'  $> char8 '\"'
+            , oneOf "xX" *> parse8BitToBuilder hexDigit 16 (1, 2)
+            , oneOf "uU" *> fail "Unicode in string literals not yet supported"
+            ,               parse8BitToBuilder octDigit 8 (1, 3)
+            ]
+        unquoted = charUtf8 <$> satisfy (/= initialQuoteChar)
+    builders <- many $ quoted <|> unquoted
     _ <- char initialQuoteChar
-    return $ pack word8s
+    return $ toStrict $ toLazyByteString $ mconcat builders
   where
-    stringChar :: Parser Word8
-    stringChar = nonEscape <|> stringEscape
-    nonEscape  = fmap (fromIntegral . ord)
-        $ satisfy (\c -> c `notElem` "\\\'\"" && ord c < 256)
-    stringEscape = char '\\' >> (octal <|> hex <|> unicode <|> simple)
-    octal = do d0 <- octDigit
-               d1 <- optionMaybe octDigit
-               d2 <- optionMaybe octDigit
-               readMaybeDigits readOct [Just d0, d1, d2]
-    readMaybeDigits :: ReadS Word8 -> [Maybe Char] -> Parser Word8
-    readMaybeDigits reader
-        = return . (\str -> let [(v, "")] = reader str in v) . catMaybes
-    hex = do _ <- oneOf "xX"
-             d0 <- hexDigit
-             d1 <- optionMaybe hexDigit
-             readMaybeDigits readHex [Just d0, d1]
-    unicode = oneOf "uU" >> fail "Unicode in string literals not yet supported"
-    simple = choice $ map charRet [ ('a', '\a')
-                                  , ('b', '\b')
-                                  , ('f', '\f')
-                                  , ('n', '\n')
-                                  , ('r', '\r')
-                                  , ('t', '\t')
-                                  , ('v', '\v')
-                                  , ('\\', '\\')
-                                  , ('\'', '\'')
-                                  , ('\"', '\"')
-                                  ]
-      where
-        charRet :: (Char, Char) -> Parser Word8
-        charRet (escapeCh, ch) = do _ <- char escapeCh
-                                    return $ fromIntegral $ ord ch
+    -- | Apply a parser between 'min' and 'max' times, failing otherwise.
+    manyN :: Parser a -> (Int, Int) -> Parser [a]
+    manyN _ (_, 0) = return []
+    manyN p (0, maX) = ((:) <$> p <*> manyN p (0, maX - 1)) <|> pure []
+    manyN p (miN, maX) = (:) <$> p <*> manyN p (miN - 1, maX - 1)
+
+    -- | Parse a number in 'base' with between 'min' and 'max' digits.
+    parseNum :: Parser Char -> Int -> (Int, Int) -> Parser Int
+    parseNum p base range = do
+      digits <- map digitToInt <$> manyN p range
+      return $ foldl (\a d -> a * base + d) 0 digits
+
+    -- | Parse a number and return a builder for the 8-bit char it represents.
+    parse8BitToBuilder :: Parser Char -> Int -> (Int, Int) -> Parser Builder
+    parse8BitToBuilder p base range = do
+      value <- parseNum p base range
+      unless (value < 256) $ fail "Escaped number is not 8-bit"
+      return $ word8 $ fromIntegral value
diff --git a/src/Proto/Google/Protobuf/Compiler/Plugin.hs b/src/Proto/Google/Protobuf/Compiler/Plugin.hs
deleted file mode 100644
--- a/src/Proto/Google/Protobuf/Compiler/Plugin.hs
+++ /dev/null
@@ -1,523 +0,0 @@
-{- This file was auto-generated from google/protobuf/compiler/plugin.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, GeneralizedNewtypeDeriving,
-  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
-  PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports#-}
-module Proto.Google.Protobuf.Compiler.Plugin
-       (CodeGeneratorRequest(), CodeGeneratorResponse(),
-        CodeGeneratorResponse'File(), Version())
-       where
-import qualified Control.DeepSeq
-import qualified Lens.Labels.Prism
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens
-import qualified Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Service.Types
-import qualified Lens.Family2
-import qualified Lens.Family2.Unchecked
-import qualified Data.Text
-import qualified Data.Map
-import qualified Data.ByteString
-import qualified Data.ByteString.Char8
-import qualified Lens.Labels
-import qualified Text.Read
-import qualified Proto.Google.Protobuf.Descriptor
-
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.fileToGenerate' @:: Lens' CodeGeneratorRequest [Data.Text.Text]@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.parameter' @:: Lens' CodeGeneratorRequest Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'parameter' @:: Lens' CodeGeneratorRequest (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.protoFile' @:: Lens' CodeGeneratorRequest
-  [Proto.Google.Protobuf.Descriptor.FileDescriptorProto]@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.compilerVersion' @:: Lens' CodeGeneratorRequest Version@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'compilerVersion' @:: Lens' CodeGeneratorRequest (Prelude.Maybe Version)@
- -}
-data CodeGeneratorRequest = CodeGeneratorRequest{_CodeGeneratorRequest'fileToGenerate
-                                                 :: ![Data.Text.Text],
-                                                 _CodeGeneratorRequest'parameter ::
-                                                 !(Prelude.Maybe Data.Text.Text),
-                                                 _CodeGeneratorRequest'protoFile ::
-                                                 ![Proto.Google.Protobuf.Descriptor.FileDescriptorProto],
-                                                 _CodeGeneratorRequest'compilerVersion ::
-                                                 !(Prelude.Maybe Version),
-                                                 _CodeGeneratorRequest'_unknownFields ::
-                                                 !Data.ProtoLens.FieldSet}
-                              deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show CodeGeneratorRequest where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' CodeGeneratorRequest "fileToGenerate"
-           ([Data.Text.Text])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'fileToGenerate
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'fileToGenerate = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorRequest "parameter"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'parameter
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'parameter = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' CodeGeneratorRequest
-           "maybe'parameter"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'parameter
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'parameter = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorRequest "protoFile"
-           ([Proto.Google.Protobuf.Descriptor.FileDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'protoFile
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'protoFile = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorRequest
-           "compilerVersion"
-           (Version)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'compilerVersion
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'compilerVersion = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' CodeGeneratorRequest
-           "maybe'compilerVersion"
-           (Prelude.Maybe Version)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorRequest'compilerVersion
-                 (\ x__ y__ -> x__{_CodeGeneratorRequest'compilerVersion = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message CodeGeneratorRequest where
-        messageName _
-          = Data.Text.pack "google.protobuf.compiler.CodeGeneratorRequest"
-        fieldsByTag
-          = let fileToGenerate__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "file_to_generate"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fileToGenerate")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorRequest
-                parameter__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "parameter"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'parameter")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorRequest
-                protoFile__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "proto_file"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           Proto.Google.Protobuf.Descriptor.FileDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "protoFile")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorRequest
-                compilerVersion__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "compiler_version"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor Version)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'compilerVersion")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorRequest
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, fileToGenerate__field_descriptor),
-                 (Data.ProtoLens.Tag 2, parameter__field_descriptor),
-                 (Data.ProtoLens.Tag 15, protoFile__field_descriptor),
-                 (Data.ProtoLens.Tag 3, compilerVersion__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _CodeGeneratorRequest'_unknownFields
-              (\ x__ y__ -> x__{_CodeGeneratorRequest'_unknownFields = y__})
-        defMessage
-          = CodeGeneratorRequest{_CodeGeneratorRequest'fileToGenerate = [],
-                                 _CodeGeneratorRequest'parameter = Prelude.Nothing,
-                                 _CodeGeneratorRequest'protoFile = [],
-                                 _CodeGeneratorRequest'compilerVersion = Prelude.Nothing,
-                                 _CodeGeneratorRequest'_unknownFields = ([])}
-instance Control.DeepSeq.NFData CodeGeneratorRequest where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_CodeGeneratorRequest'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_CodeGeneratorRequest'fileToGenerate x__)
-                   (Control.DeepSeq.deepseq (_CodeGeneratorRequest'parameter x__)
-                      (Control.DeepSeq.deepseq (_CodeGeneratorRequest'protoFile x__)
-                         (Control.DeepSeq.deepseq
-                            (_CodeGeneratorRequest'compilerVersion x__)
-                            (())))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.error' @:: Lens' CodeGeneratorResponse Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'error' @:: Lens' CodeGeneratorResponse (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.file' @:: Lens' CodeGeneratorResponse [CodeGeneratorResponse'File]@
- -}
-data CodeGeneratorResponse = CodeGeneratorResponse{_CodeGeneratorResponse'error
-                                                   :: !(Prelude.Maybe Data.Text.Text),
-                                                   _CodeGeneratorResponse'file ::
-                                                   ![CodeGeneratorResponse'File],
-                                                   _CodeGeneratorResponse'_unknownFields ::
-                                                   !Data.ProtoLens.FieldSet}
-                               deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show CodeGeneratorResponse where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' CodeGeneratorResponse "error"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'error
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'error = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' CodeGeneratorResponse "maybe'error"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'error
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'error = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorResponse "file"
-           ([CodeGeneratorResponse'File])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'file
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'file = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message CodeGeneratorResponse where
-        messageName _
-          = Data.Text.pack "google.protobuf.compiler.CodeGeneratorResponse"
-        fieldsByTag
-          = let error__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "error"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'error")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorResponse
-                file__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "file"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor CodeGeneratorResponse'File)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "file")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorResponse
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, error__field_descriptor),
-                 (Data.ProtoLens.Tag 15, file__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _CodeGeneratorResponse'_unknownFields
-              (\ x__ y__ -> x__{_CodeGeneratorResponse'_unknownFields = y__})
-        defMessage
-          = CodeGeneratorResponse{_CodeGeneratorResponse'error =
-                                    Prelude.Nothing,
-                                  _CodeGeneratorResponse'file = [],
-                                  _CodeGeneratorResponse'_unknownFields = ([])}
-instance Control.DeepSeq.NFData CodeGeneratorResponse where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_CodeGeneratorResponse'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_CodeGeneratorResponse'error x__)
-                   (Control.DeepSeq.deepseq (_CodeGeneratorResponse'file x__) (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.name' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'name' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.insertionPoint' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'insertionPoint' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.content' @:: Lens' CodeGeneratorResponse'File Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'content' @:: Lens' CodeGeneratorResponse'File (Prelude.Maybe Data.Text.Text)@
- -}
-data CodeGeneratorResponse'File = CodeGeneratorResponse'File{_CodeGeneratorResponse'File'name
-                                                             :: !(Prelude.Maybe Data.Text.Text),
-                                                             _CodeGeneratorResponse'File'insertionPoint
-                                                             :: !(Prelude.Maybe Data.Text.Text),
-                                                             _CodeGeneratorResponse'File'content ::
-                                                             !(Prelude.Maybe Data.Text.Text),
-                                                             _CodeGeneratorResponse'File'_unknownFields
-                                                             :: !Data.ProtoLens.FieldSet}
-                                    deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show CodeGeneratorResponse'File where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'name
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'File'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File
-           "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'name
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'File'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File
-           "insertionPoint"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _CodeGeneratorResponse'File'insertionPoint
-                 (\ x__ y__ ->
-                    x__{_CodeGeneratorResponse'File'insertionPoint = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File
-           "maybe'insertionPoint"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _CodeGeneratorResponse'File'insertionPoint
-                 (\ x__ y__ ->
-                    x__{_CodeGeneratorResponse'File'insertionPoint = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File "content"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'content
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'File'content = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' CodeGeneratorResponse'File
-           "maybe'content"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _CodeGeneratorResponse'File'content
-                 (\ x__ y__ -> x__{_CodeGeneratorResponse'File'content = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message CodeGeneratorResponse'File where
-        messageName _
-          = Data.Text.pack
-              "google.protobuf.compiler.CodeGeneratorResponse.File"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File
-                insertionPoint__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "insertion_point"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'insertionPoint")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File
-                content__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "content"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'content")))
-                      :: Data.ProtoLens.FieldDescriptor CodeGeneratorResponse'File
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, insertionPoint__field_descriptor),
-                 (Data.ProtoLens.Tag 15, content__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _CodeGeneratorResponse'File'_unknownFields
-              (\ x__ y__ ->
-                 x__{_CodeGeneratorResponse'File'_unknownFields = y__})
-        defMessage
-          = CodeGeneratorResponse'File{_CodeGeneratorResponse'File'name =
-                                         Prelude.Nothing,
-                                       _CodeGeneratorResponse'File'insertionPoint = Prelude.Nothing,
-                                       _CodeGeneratorResponse'File'content = Prelude.Nothing,
-                                       _CodeGeneratorResponse'File'_unknownFields = ([])}
-instance Control.DeepSeq.NFData CodeGeneratorResponse'File where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_CodeGeneratorResponse'File'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_CodeGeneratorResponse'File'name x__)
-                   (Control.DeepSeq.deepseq
-                      (_CodeGeneratorResponse'File'insertionPoint x__)
-                      (Control.DeepSeq.deepseq (_CodeGeneratorResponse'File'content x__)
-                         (()))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.major' @:: Lens' Version Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'major' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.minor' @:: Lens' Version Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'minor' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.patch' @:: Lens' Version Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'patch' @:: Lens' Version (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.suffix' @:: Lens' Version Data.Text.Text@
-    * 'Proto.Google.Protobuf.Compiler.Plugin_Fields.maybe'suffix' @:: Lens' Version (Prelude.Maybe Data.Text.Text)@
- -}
-data Version = Version{_Version'major ::
-                       !(Prelude.Maybe Data.Int.Int32),
-                       _Version'minor :: !(Prelude.Maybe Data.Int.Int32),
-                       _Version'patch :: !(Prelude.Maybe Data.Int.Int32),
-                       _Version'suffix :: !(Prelude.Maybe Data.Text.Text),
-                       _Version'_unknownFields :: !Data.ProtoLens.FieldSet}
-                 deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show Version where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' Version "major" (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'major
-                 (\ x__ y__ -> x__{_Version'major = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' Version "maybe'major"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'major
-                 (\ x__ y__ -> x__{_Version'major = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' Version "minor" (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'minor
-                 (\ x__ y__ -> x__{_Version'minor = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' Version "maybe'minor"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'minor
-                 (\ x__ y__ -> x__{_Version'minor = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' Version "patch" (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'patch
-                 (\ x__ y__ -> x__{_Version'patch = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' Version "maybe'patch"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'patch
-                 (\ x__ y__ -> x__{_Version'patch = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' Version "suffix" (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'suffix
-                 (\ x__ y__ -> x__{_Version'suffix = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' Version "maybe'suffix"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _Version'suffix
-                 (\ x__ y__ -> x__{_Version'suffix = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message Version where
-        messageName _ = Data.Text.pack "google.protobuf.compiler.Version"
-        fieldsByTag
-          = let major__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "major"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'major")))
-                      :: Data.ProtoLens.FieldDescriptor Version
-                minor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "minor"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'minor")))
-                      :: Data.ProtoLens.FieldDescriptor Version
-                patch__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "patch"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'patch")))
-                      :: Data.ProtoLens.FieldDescriptor Version
-                suffix__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "suffix"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'suffix")))
-                      :: Data.ProtoLens.FieldDescriptor Version
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, major__field_descriptor),
-                 (Data.ProtoLens.Tag 2, minor__field_descriptor),
-                 (Data.ProtoLens.Tag 3, patch__field_descriptor),
-                 (Data.ProtoLens.Tag 4, suffix__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _Version'_unknownFields
-              (\ x__ y__ -> x__{_Version'_unknownFields = y__})
-        defMessage
-          = Version{_Version'major = Prelude.Nothing,
-                    _Version'minor = Prelude.Nothing, _Version'patch = Prelude.Nothing,
-                    _Version'suffix = Prelude.Nothing, _Version'_unknownFields = ([])}
-instance Control.DeepSeq.NFData Version where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_Version'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_Version'major x__)
-                   (Control.DeepSeq.deepseq (_Version'minor x__)
-                      (Control.DeepSeq.deepseq (_Version'patch x__)
-                         (Control.DeepSeq.deepseq (_Version'suffix x__) (())))))
diff --git a/src/Proto/Google/Protobuf/Compiler/Plugin_Fields.hs b/src/Proto/Google/Protobuf/Compiler/Plugin_Fields.hs
deleted file mode 100644
--- a/src/Proto/Google/Protobuf/Compiler/Plugin_Fields.hs
+++ /dev/null
@@ -1,189 +0,0 @@
-{- This file was auto-generated from google/protobuf/compiler/plugin.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, GeneralizedNewtypeDeriving,
-  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
-  PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports#-}
-module Proto.Google.Protobuf.Compiler.Plugin_Fields where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens
-import qualified Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Service.Types
-import qualified Lens.Family2
-import qualified Lens.Family2.Unchecked
-import qualified Data.Text
-import qualified Data.Map
-import qualified Data.ByteString
-import qualified Data.ByteString.Char8
-import qualified Lens.Labels
-import qualified Text.Read
-import qualified Proto.Google.Protobuf.Descriptor
-
-compilerVersion ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "compilerVersion" a) =>
-                  Lens.Family2.LensLike' f s a
-compilerVersion
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "compilerVersion")
-content ::
-        forall f s a .
-          (Prelude.Functor f, Lens.Labels.HasLens' s "content" a) =>
-          Lens.Family2.LensLike' f s a
-content
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "content")
-error ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "error" a) =>
-        Lens.Family2.LensLike' f s a
-error
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "error")
-file ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "file" a) =>
-       Lens.Family2.LensLike' f s a
-file
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "file")
-fileToGenerate ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "fileToGenerate" a) =>
-                 Lens.Family2.LensLike' f s a
-fileToGenerate
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "fileToGenerate")
-insertionPoint ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "insertionPoint" a) =>
-                 Lens.Family2.LensLike' f s a
-insertionPoint
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "insertionPoint")
-major ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "major" a) =>
-        Lens.Family2.LensLike' f s a
-major
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "major")
-maybe'compilerVersion ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'compilerVersion" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'compilerVersion
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'compilerVersion")
-maybe'content ::
-              forall f s a .
-                (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'content" a) =>
-                Lens.Family2.LensLike' f s a
-maybe'content
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'content")
-maybe'error ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'error" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'error
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'error")
-maybe'insertionPoint ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "maybe'insertionPoint" a) =>
-                       Lens.Family2.LensLike' f s a
-maybe'insertionPoint
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'insertionPoint")
-maybe'major ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'major" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'major
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'major")
-maybe'minor ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'minor" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'minor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'minor")
-maybe'name ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'name" a) =>
-             Lens.Family2.LensLike' f s a
-maybe'name
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")
-maybe'parameter ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'parameter" a) =>
-                  Lens.Family2.LensLike' f s a
-maybe'parameter
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'parameter")
-maybe'patch ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'patch" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'patch
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'patch")
-maybe'suffix ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'suffix" a) =>
-               Lens.Family2.LensLike' f s a
-maybe'suffix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'suffix")
-minor ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "minor" a) =>
-        Lens.Family2.LensLike' f s a
-minor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "minor")
-name ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "name" a) =>
-       Lens.Family2.LensLike' f s a
-name
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-parameter ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "parameter" a) =>
-            Lens.Family2.LensLike' f s a
-parameter
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "parameter")
-patch ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "patch" a) =>
-        Lens.Family2.LensLike' f s a
-patch
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "patch")
-protoFile ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "protoFile" a) =>
-            Lens.Family2.LensLike' f s a
-protoFile
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "protoFile")
-suffix ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "suffix" a) =>
-         Lens.Family2.LensLike' f s a
-suffix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "suffix")
diff --git a/src/Proto/Google/Protobuf/Descriptor.hs b/src/Proto/Google/Protobuf/Descriptor.hs
deleted file mode 100644
--- a/src/Proto/Google/Protobuf/Descriptor.hs
+++ /dev/null
@@ -1,4907 +0,0 @@
-{- This file was auto-generated from google/protobuf/descriptor.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, GeneralizedNewtypeDeriving,
-  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
-  PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports#-}
-module Proto.Google.Protobuf.Descriptor
-       (DescriptorProto(), DescriptorProto'ExtensionRange(),
-        DescriptorProto'ReservedRange(), EnumDescriptorProto(),
-        EnumDescriptorProto'EnumReservedRange(), EnumOptions(),
-        EnumValueDescriptorProto(), EnumValueOptions(),
-        ExtensionRangeOptions(), FieldDescriptorProto(),
-        FieldDescriptorProto'Label(..), FieldDescriptorProto'Label(),
-        FieldDescriptorProto'Type(..), FieldDescriptorProto'Type(),
-        FieldOptions(), FieldOptions'CType(..), FieldOptions'CType(),
-        FieldOptions'JSType(..), FieldOptions'JSType(),
-        FileDescriptorProto(), FileDescriptorSet(), FileOptions(),
-        FileOptions'OptimizeMode(..), FileOptions'OptimizeMode(),
-        GeneratedCodeInfo(), GeneratedCodeInfo'Annotation(),
-        MessageOptions(), MethodDescriptorProto(), MethodOptions(),
-        MethodOptions'IdempotencyLevel(..),
-        MethodOptions'IdempotencyLevel(), OneofDescriptorProto(),
-        OneofOptions(), ServiceDescriptorProto(), ServiceOptions(),
-        SourceCodeInfo(), SourceCodeInfo'Location(), UninterpretedOption(),
-        UninterpretedOption'NamePart())
-       where
-import qualified Control.DeepSeq
-import qualified Lens.Labels.Prism
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens
-import qualified Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Service.Types
-import qualified Lens.Family2
-import qualified Lens.Family2.Unchecked
-import qualified Data.Text
-import qualified Data.Map
-import qualified Data.ByteString
-import qualified Data.ByteString.Char8
-import qualified Lens.Labels
-import qualified Text.Read
-
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' DescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' DescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.field' @:: Lens' DescriptorProto [FieldDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.extension' @:: Lens' DescriptorProto [FieldDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.nestedType' @:: Lens' DescriptorProto [DescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.enumType' @:: Lens' DescriptorProto [EnumDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.extensionRange' @:: Lens' DescriptorProto [DescriptorProto'ExtensionRange]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.oneofDecl' @:: Lens' DescriptorProto [OneofDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' DescriptorProto MessageOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' DescriptorProto (Prelude.Maybe MessageOptions)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.reservedRange' @:: Lens' DescriptorProto [DescriptorProto'ReservedRange]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.reservedName' @:: Lens' DescriptorProto [Data.Text.Text]@
- -}
-data DescriptorProto = DescriptorProto{_DescriptorProto'name ::
-                                       !(Prelude.Maybe Data.Text.Text),
-                                       _DescriptorProto'field :: ![FieldDescriptorProto],
-                                       _DescriptorProto'extension :: ![FieldDescriptorProto],
-                                       _DescriptorProto'nestedType :: ![DescriptorProto],
-                                       _DescriptorProto'enumType :: ![EnumDescriptorProto],
-                                       _DescriptorProto'extensionRange ::
-                                       ![DescriptorProto'ExtensionRange],
-                                       _DescriptorProto'oneofDecl :: ![OneofDescriptorProto],
-                                       _DescriptorProto'options :: !(Prelude.Maybe MessageOptions),
-                                       _DescriptorProto'reservedRange ::
-                                       ![DescriptorProto'ReservedRange],
-                                       _DescriptorProto'reservedName :: ![Data.Text.Text],
-                                       _DescriptorProto'_unknownFields :: !Data.ProtoLens.FieldSet}
-                         deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show DescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' DescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'name
-                 (\ x__ y__ -> x__{_DescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' DescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'name
-                 (\ x__ y__ -> x__{_DescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "field"
-           ([FieldDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'field
-                 (\ x__ y__ -> x__{_DescriptorProto'field = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "extension"
-           ([FieldDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'extension
-                 (\ x__ y__ -> x__{_DescriptorProto'extension = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "nestedType"
-           ([DescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'nestedType
-                 (\ x__ y__ -> x__{_DescriptorProto'nestedType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "enumType"
-           ([EnumDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'enumType
-                 (\ x__ y__ -> x__{_DescriptorProto'enumType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "extensionRange"
-           ([DescriptorProto'ExtensionRange])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'extensionRange
-                 (\ x__ y__ -> x__{_DescriptorProto'extensionRange = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "oneofDecl"
-           ([OneofDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'oneofDecl
-                 (\ x__ y__ -> x__{_DescriptorProto'oneofDecl = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "options"
-           (MessageOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'options
-                 (\ x__ y__ -> x__{_DescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' DescriptorProto "maybe'options"
-           (Prelude.Maybe MessageOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'options
-                 (\ x__ y__ -> x__{_DescriptorProto'options = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "reservedRange"
-           ([DescriptorProto'ReservedRange])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'reservedRange
-                 (\ x__ y__ -> x__{_DescriptorProto'reservedRange = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto "reservedName"
-           ([Data.Text.Text])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'reservedName
-                 (\ x__ y__ -> x__{_DescriptorProto'reservedName = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message DescriptorProto where
-        messageName _ = Data.Text.pack "google.protobuf.DescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                field__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "field"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "field")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                extension__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "extension"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extension")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                nestedType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "nested_type"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nestedType")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                enumType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "enum_type"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enumType")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                extensionRange__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "extension_range"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ExtensionRange)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extensionRange")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                oneofDecl__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "oneof_decl"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor OneofDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "oneofDecl")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor MessageOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                reservedRange__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "reserved_range"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto'ReservedRange)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedRange")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-                reservedName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "reserved_name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedName")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, field__field_descriptor),
-                 (Data.ProtoLens.Tag 6, extension__field_descriptor),
-                 (Data.ProtoLens.Tag 3, nestedType__field_descriptor),
-                 (Data.ProtoLens.Tag 4, enumType__field_descriptor),
-                 (Data.ProtoLens.Tag 5, extensionRange__field_descriptor),
-                 (Data.ProtoLens.Tag 8, oneofDecl__field_descriptor),
-                 (Data.ProtoLens.Tag 7, options__field_descriptor),
-                 (Data.ProtoLens.Tag 9, reservedRange__field_descriptor),
-                 (Data.ProtoLens.Tag 10, reservedName__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _DescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_DescriptorProto'_unknownFields = y__})
-        defMessage
-          = DescriptorProto{_DescriptorProto'name = Prelude.Nothing,
-                            _DescriptorProto'field = [], _DescriptorProto'extension = [],
-                            _DescriptorProto'nestedType = [], _DescriptorProto'enumType = [],
-                            _DescriptorProto'extensionRange = [],
-                            _DescriptorProto'oneofDecl = [],
-                            _DescriptorProto'options = Prelude.Nothing,
-                            _DescriptorProto'reservedRange = [],
-                            _DescriptorProto'reservedName = [],
-                            _DescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData DescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_DescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_DescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_DescriptorProto'field x__)
-                      (Control.DeepSeq.deepseq (_DescriptorProto'extension x__)
-                         (Control.DeepSeq.deepseq (_DescriptorProto'nestedType x__)
-                            (Control.DeepSeq.deepseq (_DescriptorProto'enumType x__)
-                               (Control.DeepSeq.deepseq (_DescriptorProto'extensionRange x__)
-                                  (Control.DeepSeq.deepseq (_DescriptorProto'oneofDecl x__)
-                                     (Control.DeepSeq.deepseq (_DescriptorProto'options x__)
-                                        (Control.DeepSeq.deepseq
-                                           (_DescriptorProto'reservedRange x__)
-                                           (Control.DeepSeq.deepseq
-                                              (_DescriptorProto'reservedName x__)
-                                              (())))))))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' DescriptorProto'ExtensionRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' DescriptorProto'ExtensionRange (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' DescriptorProto'ExtensionRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' DescriptorProto'ExtensionRange (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' DescriptorProto'ExtensionRange ExtensionRangeOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' DescriptorProto'ExtensionRange
-  (Prelude.Maybe ExtensionRangeOptions)@
- -}
-data DescriptorProto'ExtensionRange = DescriptorProto'ExtensionRange{_DescriptorProto'ExtensionRange'start
-                                                                     ::
-                                                                     !(Prelude.Maybe
-                                                                         Data.Int.Int32),
-                                                                     _DescriptorProto'ExtensionRange'end
-                                                                     ::
-                                                                     !(Prelude.Maybe
-                                                                         Data.Int.Int32),
-                                                                     _DescriptorProto'ExtensionRange'options
-                                                                     ::
-                                                                     !(Prelude.Maybe
-                                                                         ExtensionRangeOptions),
-                                                                     _DescriptorProto'ExtensionRange'_unknownFields
-                                                                     :: !Data.ProtoLens.FieldSet}
-                                        deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show DescriptorProto'ExtensionRange where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange
-           "start"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'start
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'start = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange
-           "maybe'start"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'start
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'start = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange "end"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'end
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'end = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange
-           "maybe'end"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ExtensionRange'end
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'end = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange
-           "options"
-           (ExtensionRangeOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _DescriptorProto'ExtensionRange'options
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' DescriptorProto'ExtensionRange
-           "maybe'options"
-           (Prelude.Maybe ExtensionRangeOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _DescriptorProto'ExtensionRange'options
-                 (\ x__ y__ -> x__{_DescriptorProto'ExtensionRange'options = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message DescriptorProto'ExtensionRange
-         where
-        messageName _
-          = Data.Text.pack "google.protobuf.DescriptorProto.ExtensionRange"
-        fieldsByTag
-          = let start__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "start"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'start")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange
-                end__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "end"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'end")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor ExtensionRangeOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto'ExtensionRange
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, start__field_descriptor),
-                 (Data.ProtoLens.Tag 2, end__field_descriptor),
-                 (Data.ProtoLens.Tag 3, options__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _DescriptorProto'ExtensionRange'_unknownFields
-              (\ x__ y__ ->
-                 x__{_DescriptorProto'ExtensionRange'_unknownFields = y__})
-        defMessage
-          = DescriptorProto'ExtensionRange{_DescriptorProto'ExtensionRange'start
-                                             = Prelude.Nothing,
-                                           _DescriptorProto'ExtensionRange'end = Prelude.Nothing,
-                                           _DescriptorProto'ExtensionRange'options =
-                                             Prelude.Nothing,
-                                           _DescriptorProto'ExtensionRange'_unknownFields = ([])}
-instance Control.DeepSeq.NFData DescriptorProto'ExtensionRange
-         where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_DescriptorProto'ExtensionRange'_unknownFields x__)
-                (Control.DeepSeq.deepseq
-                   (_DescriptorProto'ExtensionRange'start x__)
-                   (Control.DeepSeq.deepseq (_DescriptorProto'ExtensionRange'end x__)
-                      (Control.DeepSeq.deepseq
-                         (_DescriptorProto'ExtensionRange'options x__)
-                         (()))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' DescriptorProto'ReservedRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' DescriptorProto'ReservedRange (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' DescriptorProto'ReservedRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' DescriptorProto'ReservedRange (Prelude.Maybe Data.Int.Int32)@
- -}
-data DescriptorProto'ReservedRange = DescriptorProto'ReservedRange{_DescriptorProto'ReservedRange'start
-                                                                   ::
-                                                                   !(Prelude.Maybe Data.Int.Int32),
-                                                                   _DescriptorProto'ReservedRange'end
-                                                                   ::
-                                                                   !(Prelude.Maybe Data.Int.Int32),
-                                                                   _DescriptorProto'ReservedRange'_unknownFields
-                                                                   :: !Data.ProtoLens.FieldSet}
-                                       deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show DescriptorProto'ReservedRange where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' DescriptorProto'ReservedRange "start"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'start
-                 (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'start = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' DescriptorProto'ReservedRange
-           "maybe'start"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'start
-                 (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'start = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' DescriptorProto'ReservedRange "end"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'end
-                 (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'end = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' DescriptorProto'ReservedRange
-           "maybe'end"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _DescriptorProto'ReservedRange'end
-                 (\ x__ y__ -> x__{_DescriptorProto'ReservedRange'end = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message DescriptorProto'ReservedRange where
-        messageName _
-          = Data.Text.pack "google.protobuf.DescriptorProto.ReservedRange"
-        fieldsByTag
-          = let start__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "start"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'start")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto'ReservedRange
-                end__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "end"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'end")))
-                      :: Data.ProtoLens.FieldDescriptor DescriptorProto'ReservedRange
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, start__field_descriptor),
-                 (Data.ProtoLens.Tag 2, end__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _DescriptorProto'ReservedRange'_unknownFields
-              (\ x__ y__ ->
-                 x__{_DescriptorProto'ReservedRange'_unknownFields = y__})
-        defMessage
-          = DescriptorProto'ReservedRange{_DescriptorProto'ReservedRange'start
-                                            = Prelude.Nothing,
-                                          _DescriptorProto'ReservedRange'end = Prelude.Nothing,
-                                          _DescriptorProto'ReservedRange'_unknownFields = ([])}
-instance Control.DeepSeq.NFData DescriptorProto'ReservedRange where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_DescriptorProto'ReservedRange'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_DescriptorProto'ReservedRange'start x__)
-                   (Control.DeepSeq.deepseq (_DescriptorProto'ReservedRange'end x__)
-                      (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' EnumDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' EnumDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.value' @:: Lens' EnumDescriptorProto [EnumValueDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' EnumDescriptorProto EnumOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' EnumDescriptorProto (Prelude.Maybe EnumOptions)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.reservedRange' @:: Lens' EnumDescriptorProto [EnumDescriptorProto'EnumReservedRange]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.reservedName' @:: Lens' EnumDescriptorProto [Data.Text.Text]@
- -}
-data EnumDescriptorProto = EnumDescriptorProto{_EnumDescriptorProto'name
-                                               :: !(Prelude.Maybe Data.Text.Text),
-                                               _EnumDescriptorProto'value ::
-                                               ![EnumValueDescriptorProto],
-                                               _EnumDescriptorProto'options ::
-                                               !(Prelude.Maybe EnumOptions),
-                                               _EnumDescriptorProto'reservedRange ::
-                                               ![EnumDescriptorProto'EnumReservedRange],
-                                               _EnumDescriptorProto'reservedName ::
-                                               ![Data.Text.Text],
-                                               _EnumDescriptorProto'_unknownFields ::
-                                               !Data.ProtoLens.FieldSet}
-                             deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show EnumDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' EnumDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'name
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'name
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumDescriptorProto "value"
-           ([EnumValueDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'value
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'value = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumDescriptorProto "options"
-           (EnumOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'options
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' EnumDescriptorProto "maybe'options"
-           (Prelude.Maybe EnumOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'options
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'options = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumDescriptorProto "reservedRange"
-           ([EnumDescriptorProto'EnumReservedRange])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'reservedRange
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'reservedRange = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumDescriptorProto "reservedName"
-           ([Data.Text.Text])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumDescriptorProto'reservedName
-                 (\ x__ y__ -> x__{_EnumDescriptorProto'reservedName = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message EnumDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.EnumDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor EnumDescriptorProto
-                value__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "value"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor EnumValueDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")))
-                      :: Data.ProtoLens.FieldDescriptor EnumDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor EnumOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor EnumDescriptorProto
-                reservedRange__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "reserved_range"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor
-                           EnumDescriptorProto'EnumReservedRange)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedRange")))
-                      :: Data.ProtoLens.FieldDescriptor EnumDescriptorProto
-                reservedName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "reserved_name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedName")))
-                      :: Data.ProtoLens.FieldDescriptor EnumDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, value__field_descriptor),
-                 (Data.ProtoLens.Tag 3, options__field_descriptor),
-                 (Data.ProtoLens.Tag 4, reservedRange__field_descriptor),
-                 (Data.ProtoLens.Tag 5, reservedName__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _EnumDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_EnumDescriptorProto'_unknownFields = y__})
-        defMessage
-          = EnumDescriptorProto{_EnumDescriptorProto'name = Prelude.Nothing,
-                                _EnumDescriptorProto'value = [],
-                                _EnumDescriptorProto'options = Prelude.Nothing,
-                                _EnumDescriptorProto'reservedRange = [],
-                                _EnumDescriptorProto'reservedName = [],
-                                _EnumDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData EnumDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_EnumDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_EnumDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_EnumDescriptorProto'value x__)
-                      (Control.DeepSeq.deepseq (_EnumDescriptorProto'options x__)
-                         (Control.DeepSeq.deepseq (_EnumDescriptorProto'reservedRange x__)
-                            (Control.DeepSeq.deepseq (_EnumDescriptorProto'reservedName x__)
-                               (()))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.start' @:: Lens' EnumDescriptorProto'EnumReservedRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'start' @:: Lens' EnumDescriptorProto'EnumReservedRange
-  (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' EnumDescriptorProto'EnumReservedRange Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' EnumDescriptorProto'EnumReservedRange
-  (Prelude.Maybe Data.Int.Int32)@
- -}
-data EnumDescriptorProto'EnumReservedRange = EnumDescriptorProto'EnumReservedRange{_EnumDescriptorProto'EnumReservedRange'start
-                                                                                   ::
-                                                                                   !(Prelude.Maybe
-                                                                                       Data.Int.Int32),
-                                                                                   _EnumDescriptorProto'EnumReservedRange'end
-                                                                                   ::
-                                                                                   !(Prelude.Maybe
-                                                                                       Data.Int.Int32),
-                                                                                   _EnumDescriptorProto'EnumReservedRange'_unknownFields
-                                                                                   ::
-                                                                                   !Data.ProtoLens.FieldSet}
-                                               deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show EnumDescriptorProto'EnumReservedRange where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' EnumDescriptorProto'EnumReservedRange
-           "start"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _EnumDescriptorProto'EnumReservedRange'start
-                 (\ x__ y__ ->
-                    x__{_EnumDescriptorProto'EnumReservedRange'start = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumDescriptorProto'EnumReservedRange
-           "maybe'start"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _EnumDescriptorProto'EnumReservedRange'start
-                 (\ x__ y__ ->
-                    x__{_EnumDescriptorProto'EnumReservedRange'start = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumDescriptorProto'EnumReservedRange
-           "end"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _EnumDescriptorProto'EnumReservedRange'end
-                 (\ x__ y__ ->
-                    x__{_EnumDescriptorProto'EnumReservedRange'end = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumDescriptorProto'EnumReservedRange
-           "maybe'end"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _EnumDescriptorProto'EnumReservedRange'end
-                 (\ x__ y__ ->
-                    x__{_EnumDescriptorProto'EnumReservedRange'end = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message
-           EnumDescriptorProto'EnumReservedRange
-         where
-        messageName _
-          = Data.Text.pack
-              "google.protobuf.EnumDescriptorProto.EnumReservedRange"
-        fieldsByTag
-          = let start__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "start"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'start")))
-                      ::
-                      Data.ProtoLens.FieldDescriptor
-                        EnumDescriptorProto'EnumReservedRange
-                end__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "end"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'end")))
-                      ::
-                      Data.ProtoLens.FieldDescriptor
-                        EnumDescriptorProto'EnumReservedRange
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, start__field_descriptor),
-                 (Data.ProtoLens.Tag 2, end__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _EnumDescriptorProto'EnumReservedRange'_unknownFields
-              (\ x__ y__ ->
-                 x__{_EnumDescriptorProto'EnumReservedRange'_unknownFields = y__})
-        defMessage
-          = EnumDescriptorProto'EnumReservedRange{_EnumDescriptorProto'EnumReservedRange'start
-                                                    = Prelude.Nothing,
-                                                  _EnumDescriptorProto'EnumReservedRange'end =
-                                                    Prelude.Nothing,
-                                                  _EnumDescriptorProto'EnumReservedRange'_unknownFields
-                                                    = ([])}
-instance Control.DeepSeq.NFData
-           EnumDescriptorProto'EnumReservedRange
-         where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_EnumDescriptorProto'EnumReservedRange'_unknownFields x__)
-                (Control.DeepSeq.deepseq
-                   (_EnumDescriptorProto'EnumReservedRange'start x__)
-                   (Control.DeepSeq.deepseq
-                      (_EnumDescriptorProto'EnumReservedRange'end x__)
-                      (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.allowAlias' @:: Lens' EnumOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'allowAlias' @:: Lens' EnumOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' EnumOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' EnumOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' EnumOptions [UninterpretedOption]@
- -}
-data EnumOptions = EnumOptions{_EnumOptions'allowAlias ::
-                               !(Prelude.Maybe Prelude.Bool),
-                               _EnumOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),
-                               _EnumOptions'uninterpretedOption :: ![UninterpretedOption],
-                               _EnumOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                     deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show EnumOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' EnumOptions "allowAlias"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumOptions'allowAlias
-                 (\ x__ y__ -> x__{_EnumOptions'allowAlias = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumOptions "maybe'allowAlias"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumOptions'allowAlias
-                 (\ x__ y__ -> x__{_EnumOptions'allowAlias = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumOptions'deprecated
-                 (\ x__ y__ -> x__{_EnumOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' EnumOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumOptions'deprecated
-                 (\ x__ y__ -> x__{_EnumOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_EnumOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message EnumOptions where
-        messageName _ = Data.Text.pack "google.protobuf.EnumOptions"
-        fieldsByTag
-          = let allowAlias__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "allow_alias"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'allowAlias")))
-                      :: Data.ProtoLens.FieldDescriptor EnumOptions
-                deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor EnumOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor EnumOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 2, allowAlias__field_descriptor),
-                 (Data.ProtoLens.Tag 3, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _EnumOptions'_unknownFields
-              (\ x__ y__ -> x__{_EnumOptions'_unknownFields = y__})
-        defMessage
-          = EnumOptions{_EnumOptions'allowAlias = Prelude.Nothing,
-                        _EnumOptions'deprecated = Prelude.Nothing,
-                        _EnumOptions'uninterpretedOption = [],
-                        _EnumOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData EnumOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_EnumOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_EnumOptions'allowAlias x__)
-                   (Control.DeepSeq.deepseq (_EnumOptions'deprecated x__)
-                      (Control.DeepSeq.deepseq (_EnumOptions'uninterpretedOption x__)
-                         (()))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' EnumValueDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.number' @:: Lens' EnumValueDescriptorProto Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'number' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' EnumValueDescriptorProto EnumValueOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' EnumValueDescriptorProto (Prelude.Maybe EnumValueOptions)@
- -}
-data EnumValueDescriptorProto = EnumValueDescriptorProto{_EnumValueDescriptorProto'name
-                                                         :: !(Prelude.Maybe Data.Text.Text),
-                                                         _EnumValueDescriptorProto'number ::
-                                                         !(Prelude.Maybe Data.Int.Int32),
-                                                         _EnumValueDescriptorProto'options ::
-                                                         !(Prelude.Maybe EnumValueOptions),
-                                                         _EnumValueDescriptorProto'_unknownFields ::
-                                                         !Data.ProtoLens.FieldSet}
-                                  deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show EnumValueDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' EnumValueDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'name
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumValueDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'name
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumValueDescriptorProto "number"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'number
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'number = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' EnumValueDescriptorProto
-           "maybe'number"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'number
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'number = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumValueDescriptorProto "options"
-           (EnumValueOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'options
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' EnumValueDescriptorProto
-           "maybe'options"
-           (Prelude.Maybe EnumValueOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueDescriptorProto'options
-                 (\ x__ y__ -> x__{_EnumValueDescriptorProto'options = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message EnumValueDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.EnumValueDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto
-                number__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "number"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'number")))
-                      :: Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor EnumValueOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor EnumValueDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, number__field_descriptor),
-                 (Data.ProtoLens.Tag 3, options__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _EnumValueDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_EnumValueDescriptorProto'_unknownFields = y__})
-        defMessage
-          = EnumValueDescriptorProto{_EnumValueDescriptorProto'name =
-                                       Prelude.Nothing,
-                                     _EnumValueDescriptorProto'number = Prelude.Nothing,
-                                     _EnumValueDescriptorProto'options = Prelude.Nothing,
-                                     _EnumValueDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData EnumValueDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_EnumValueDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_EnumValueDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_EnumValueDescriptorProto'number x__)
-                      (Control.DeepSeq.deepseq (_EnumValueDescriptorProto'options x__)
-                         (()))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' EnumValueOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' EnumValueOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' EnumValueOptions [UninterpretedOption]@
- -}
-data EnumValueOptions = EnumValueOptions{_EnumValueOptions'deprecated
-                                         :: !(Prelude.Maybe Prelude.Bool),
-                                         _EnumValueOptions'uninterpretedOption ::
-                                         ![UninterpretedOption],
-                                         _EnumValueOptions'_unknownFields ::
-                                         !Data.ProtoLens.FieldSet}
-                          deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show EnumValueOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' EnumValueOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueOptions'deprecated
-                 (\ x__ y__ -> x__{_EnumValueOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' EnumValueOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueOptions'deprecated
-                 (\ x__ y__ -> x__{_EnumValueOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' EnumValueOptions
-           "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _EnumValueOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_EnumValueOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message EnumValueOptions where
-        messageName _ = Data.Text.pack "google.protobuf.EnumValueOptions"
-        fieldsByTag
-          = let deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor EnumValueOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor EnumValueOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _EnumValueOptions'_unknownFields
-              (\ x__ y__ -> x__{_EnumValueOptions'_unknownFields = y__})
-        defMessage
-          = EnumValueOptions{_EnumValueOptions'deprecated = Prelude.Nothing,
-                             _EnumValueOptions'uninterpretedOption = [],
-                             _EnumValueOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData EnumValueOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_EnumValueOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_EnumValueOptions'deprecated x__)
-                   (Control.DeepSeq.deepseq
-                      (_EnumValueOptions'uninterpretedOption x__)
-                      (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' ExtensionRangeOptions [UninterpretedOption]@
- -}
-data ExtensionRangeOptions = ExtensionRangeOptions{_ExtensionRangeOptions'uninterpretedOption
-                                                   :: ![UninterpretedOption],
-                                                   _ExtensionRangeOptions'_unknownFields ::
-                                                   !Data.ProtoLens.FieldSet}
-                               deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show ExtensionRangeOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' ExtensionRangeOptions
-           "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _ExtensionRangeOptions'uninterpretedOption
-                 (\ x__ y__ ->
-                    x__{_ExtensionRangeOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message ExtensionRangeOptions where
-        messageName _
-          = Data.Text.pack "google.protobuf.ExtensionRangeOptions"
-        fieldsByTag
-          = let uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor ExtensionRangeOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _ExtensionRangeOptions'_unknownFields
-              (\ x__ y__ -> x__{_ExtensionRangeOptions'_unknownFields = y__})
-        defMessage
-          = ExtensionRangeOptions{_ExtensionRangeOptions'uninterpretedOption
-                                    = [],
-                                  _ExtensionRangeOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData ExtensionRangeOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_ExtensionRangeOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq
-                   (_ExtensionRangeOptions'uninterpretedOption x__)
-                   (()))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' FieldDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.number' @:: Lens' FieldDescriptorProto Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'number' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.label' @:: Lens' FieldDescriptorProto FieldDescriptorProto'Label@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'label' @:: Lens' FieldDescriptorProto
-  (Prelude.Maybe FieldDescriptorProto'Label)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.type'' @:: Lens' FieldDescriptorProto FieldDescriptorProto'Type@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'type'' @:: Lens' FieldDescriptorProto
-  (Prelude.Maybe FieldDescriptorProto'Type)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.typeName' @:: Lens' FieldDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'typeName' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.extendee' @:: Lens' FieldDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'extendee' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.defaultValue' @:: Lens' FieldDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'defaultValue' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.oneofIndex' @:: Lens' FieldDescriptorProto Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'oneofIndex' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.jsonName' @:: Lens' FieldDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'jsonName' @:: Lens' FieldDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' FieldDescriptorProto FieldOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' FieldDescriptorProto (Prelude.Maybe FieldOptions)@
- -}
-data FieldDescriptorProto = FieldDescriptorProto{_FieldDescriptorProto'name
-                                                 :: !(Prelude.Maybe Data.Text.Text),
-                                                 _FieldDescriptorProto'number ::
-                                                 !(Prelude.Maybe Data.Int.Int32),
-                                                 _FieldDescriptorProto'label ::
-                                                 !(Prelude.Maybe FieldDescriptorProto'Label),
-                                                 _FieldDescriptorProto'type' ::
-                                                 !(Prelude.Maybe FieldDescriptorProto'Type),
-                                                 _FieldDescriptorProto'typeName ::
-                                                 !(Prelude.Maybe Data.Text.Text),
-                                                 _FieldDescriptorProto'extendee ::
-                                                 !(Prelude.Maybe Data.Text.Text),
-                                                 _FieldDescriptorProto'defaultValue ::
-                                                 !(Prelude.Maybe Data.Text.Text),
-                                                 _FieldDescriptorProto'oneofIndex ::
-                                                 !(Prelude.Maybe Data.Int.Int32),
-                                                 _FieldDescriptorProto'jsonName ::
-                                                 !(Prelude.Maybe Data.Text.Text),
-                                                 _FieldDescriptorProto'options ::
-                                                 !(Prelude.Maybe FieldOptions),
-                                                 _FieldDescriptorProto'_unknownFields ::
-                                                 !Data.ProtoLens.FieldSet}
-                              deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show FieldDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' FieldDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'name
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'name
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "number"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'number
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'number = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'number"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'number
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'number = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "label"
-           (FieldDescriptorProto'Label)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'label
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'label = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'label"
-           (Prelude.Maybe FieldDescriptorProto'Label)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'label
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'label = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "type'"
-           (FieldDescriptorProto'Type)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'type'
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'type' = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'type'"
-           (Prelude.Maybe FieldDescriptorProto'Type)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'type'
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'type' = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "typeName"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'typeName
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'typeName = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'typeName"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'typeName
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'typeName = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "extendee"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'extendee
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'extendee = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'extendee"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'extendee
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'extendee = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "defaultValue"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'defaultValue
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'defaultValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto
-           "maybe'defaultValue"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'defaultValue
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'defaultValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "oneofIndex"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'oneofIndex
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'oneofIndex = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto
-           "maybe'oneofIndex"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'oneofIndex
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'oneofIndex = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "jsonName"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'jsonName
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'jsonName = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'jsonName"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'jsonName
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'jsonName = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldDescriptorProto "options"
-           (FieldOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'options
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' FieldDescriptorProto "maybe'options"
-           (Prelude.Maybe FieldOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldDescriptorProto'options
-                 (\ x__ y__ -> x__{_FieldDescriptorProto'options = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message FieldDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.FieldDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                number__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "number"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'number")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                label__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "label"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Label)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'label")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                type'__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto'Type)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'type'")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                typeName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "type_name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'typeName")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                extendee__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "extendee"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'extendee")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                defaultValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "default_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'defaultValue")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                oneofIndex__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "oneof_index"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'oneofIndex")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                jsonName__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "json_name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'jsonName")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor FieldDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 3, number__field_descriptor),
-                 (Data.ProtoLens.Tag 4, label__field_descriptor),
-                 (Data.ProtoLens.Tag 5, type'__field_descriptor),
-                 (Data.ProtoLens.Tag 6, typeName__field_descriptor),
-                 (Data.ProtoLens.Tag 2, extendee__field_descriptor),
-                 (Data.ProtoLens.Tag 7, defaultValue__field_descriptor),
-                 (Data.ProtoLens.Tag 9, oneofIndex__field_descriptor),
-                 (Data.ProtoLens.Tag 10, jsonName__field_descriptor),
-                 (Data.ProtoLens.Tag 8, options__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _FieldDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_FieldDescriptorProto'_unknownFields = y__})
-        defMessage
-          = FieldDescriptorProto{_FieldDescriptorProto'name =
-                                   Prelude.Nothing,
-                                 _FieldDescriptorProto'number = Prelude.Nothing,
-                                 _FieldDescriptorProto'label = Prelude.Nothing,
-                                 _FieldDescriptorProto'type' = Prelude.Nothing,
-                                 _FieldDescriptorProto'typeName = Prelude.Nothing,
-                                 _FieldDescriptorProto'extendee = Prelude.Nothing,
-                                 _FieldDescriptorProto'defaultValue = Prelude.Nothing,
-                                 _FieldDescriptorProto'oneofIndex = Prelude.Nothing,
-                                 _FieldDescriptorProto'jsonName = Prelude.Nothing,
-                                 _FieldDescriptorProto'options = Prelude.Nothing,
-                                 _FieldDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData FieldDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_FieldDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_FieldDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_FieldDescriptorProto'number x__)
-                      (Control.DeepSeq.deepseq (_FieldDescriptorProto'label x__)
-                         (Control.DeepSeq.deepseq (_FieldDescriptorProto'type' x__)
-                            (Control.DeepSeq.deepseq (_FieldDescriptorProto'typeName x__)
-                               (Control.DeepSeq.deepseq (_FieldDescriptorProto'extendee x__)
-                                  (Control.DeepSeq.deepseq (_FieldDescriptorProto'defaultValue x__)
-                                     (Control.DeepSeq.deepseq (_FieldDescriptorProto'oneofIndex x__)
-                                        (Control.DeepSeq.deepseq
-                                           (_FieldDescriptorProto'jsonName x__)
-                                           (Control.DeepSeq.deepseq
-                                              (_FieldDescriptorProto'options x__)
-                                              (())))))))))))
-data FieldDescriptorProto'Label = FieldDescriptorProto'LABEL_OPTIONAL
-                                | FieldDescriptorProto'LABEL_REQUIRED
-                                | FieldDescriptorProto'LABEL_REPEATED
-                                    deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Label
-         where
-        fieldDefault = FieldDescriptorProto'LABEL_OPTIONAL
-instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Label
-         where
-        maybeToEnum 1 = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL
-        maybeToEnum 2 = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED
-        maybeToEnum 3 = Prelude.Just FieldDescriptorProto'LABEL_REPEATED
-        maybeToEnum _ = Prelude.Nothing
-        showEnum FieldDescriptorProto'LABEL_OPTIONAL = "LABEL_OPTIONAL"
-        showEnum FieldDescriptorProto'LABEL_REQUIRED = "LABEL_REQUIRED"
-        showEnum FieldDescriptorProto'LABEL_REPEATED = "LABEL_REPEATED"
-        readEnum "LABEL_OPTIONAL"
-          = Prelude.Just FieldDescriptorProto'LABEL_OPTIONAL
-        readEnum "LABEL_REQUIRED"
-          = Prelude.Just FieldDescriptorProto'LABEL_REQUIRED
-        readEnum "LABEL_REPEATED"
-          = Prelude.Just FieldDescriptorProto'LABEL_REPEATED
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum FieldDescriptorProto'Label where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum Label: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum FieldDescriptorProto'LABEL_OPTIONAL = 1
-        fromEnum FieldDescriptorProto'LABEL_REQUIRED = 2
-        fromEnum FieldDescriptorProto'LABEL_REPEATED = 3
-        succ FieldDescriptorProto'LABEL_REPEATED
-          = Prelude.error
-              "FieldDescriptorProto'Label.succ: bad argument FieldDescriptorProto'LABEL_REPEATED. This value would be out of bounds."
-        succ FieldDescriptorProto'LABEL_OPTIONAL
-          = FieldDescriptorProto'LABEL_REQUIRED
-        succ FieldDescriptorProto'LABEL_REQUIRED
-          = FieldDescriptorProto'LABEL_REPEATED
-        pred FieldDescriptorProto'LABEL_OPTIONAL
-          = Prelude.error
-              "FieldDescriptorProto'Label.pred: bad argument FieldDescriptorProto'LABEL_OPTIONAL. This value would be out of bounds."
-        pred FieldDescriptorProto'LABEL_REQUIRED
-          = FieldDescriptorProto'LABEL_OPTIONAL
-        pred FieldDescriptorProto'LABEL_REPEATED
-          = FieldDescriptorProto'LABEL_REQUIRED
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded FieldDescriptorProto'Label where
-        minBound = FieldDescriptorProto'LABEL_OPTIONAL
-        maxBound = FieldDescriptorProto'LABEL_REPEATED
-instance Control.DeepSeq.NFData FieldDescriptorProto'Label where
-        rnf x__ = Prelude.seq x__ (())
-data FieldDescriptorProto'Type = FieldDescriptorProto'TYPE_DOUBLE
-                               | FieldDescriptorProto'TYPE_FLOAT
-                               | FieldDescriptorProto'TYPE_INT64
-                               | FieldDescriptorProto'TYPE_UINT64
-                               | FieldDescriptorProto'TYPE_INT32
-                               | FieldDescriptorProto'TYPE_FIXED64
-                               | FieldDescriptorProto'TYPE_FIXED32
-                               | FieldDescriptorProto'TYPE_BOOL
-                               | FieldDescriptorProto'TYPE_STRING
-                               | FieldDescriptorProto'TYPE_GROUP
-                               | FieldDescriptorProto'TYPE_MESSAGE
-                               | FieldDescriptorProto'TYPE_BYTES
-                               | FieldDescriptorProto'TYPE_UINT32
-                               | FieldDescriptorProto'TYPE_ENUM
-                               | FieldDescriptorProto'TYPE_SFIXED32
-                               | FieldDescriptorProto'TYPE_SFIXED64
-                               | FieldDescriptorProto'TYPE_SINT32
-                               | FieldDescriptorProto'TYPE_SINT64
-                                   deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault FieldDescriptorProto'Type
-         where
-        fieldDefault = FieldDescriptorProto'TYPE_DOUBLE
-instance Data.ProtoLens.MessageEnum FieldDescriptorProto'Type where
-        maybeToEnum 1 = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE
-        maybeToEnum 2 = Prelude.Just FieldDescriptorProto'TYPE_FLOAT
-        maybeToEnum 3 = Prelude.Just FieldDescriptorProto'TYPE_INT64
-        maybeToEnum 4 = Prelude.Just FieldDescriptorProto'TYPE_UINT64
-        maybeToEnum 5 = Prelude.Just FieldDescriptorProto'TYPE_INT32
-        maybeToEnum 6 = Prelude.Just FieldDescriptorProto'TYPE_FIXED64
-        maybeToEnum 7 = Prelude.Just FieldDescriptorProto'TYPE_FIXED32
-        maybeToEnum 8 = Prelude.Just FieldDescriptorProto'TYPE_BOOL
-        maybeToEnum 9 = Prelude.Just FieldDescriptorProto'TYPE_STRING
-        maybeToEnum 10 = Prelude.Just FieldDescriptorProto'TYPE_GROUP
-        maybeToEnum 11 = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE
-        maybeToEnum 12 = Prelude.Just FieldDescriptorProto'TYPE_BYTES
-        maybeToEnum 13 = Prelude.Just FieldDescriptorProto'TYPE_UINT32
-        maybeToEnum 14 = Prelude.Just FieldDescriptorProto'TYPE_ENUM
-        maybeToEnum 15 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32
-        maybeToEnum 16 = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64
-        maybeToEnum 17 = Prelude.Just FieldDescriptorProto'TYPE_SINT32
-        maybeToEnum 18 = Prelude.Just FieldDescriptorProto'TYPE_SINT64
-        maybeToEnum _ = Prelude.Nothing
-        showEnum FieldDescriptorProto'TYPE_DOUBLE = "TYPE_DOUBLE"
-        showEnum FieldDescriptorProto'TYPE_FLOAT = "TYPE_FLOAT"
-        showEnum FieldDescriptorProto'TYPE_INT64 = "TYPE_INT64"
-        showEnum FieldDescriptorProto'TYPE_UINT64 = "TYPE_UINT64"
-        showEnum FieldDescriptorProto'TYPE_INT32 = "TYPE_INT32"
-        showEnum FieldDescriptorProto'TYPE_FIXED64 = "TYPE_FIXED64"
-        showEnum FieldDescriptorProto'TYPE_FIXED32 = "TYPE_FIXED32"
-        showEnum FieldDescriptorProto'TYPE_BOOL = "TYPE_BOOL"
-        showEnum FieldDescriptorProto'TYPE_STRING = "TYPE_STRING"
-        showEnum FieldDescriptorProto'TYPE_GROUP = "TYPE_GROUP"
-        showEnum FieldDescriptorProto'TYPE_MESSAGE = "TYPE_MESSAGE"
-        showEnum FieldDescriptorProto'TYPE_BYTES = "TYPE_BYTES"
-        showEnum FieldDescriptorProto'TYPE_UINT32 = "TYPE_UINT32"
-        showEnum FieldDescriptorProto'TYPE_ENUM = "TYPE_ENUM"
-        showEnum FieldDescriptorProto'TYPE_SFIXED32 = "TYPE_SFIXED32"
-        showEnum FieldDescriptorProto'TYPE_SFIXED64 = "TYPE_SFIXED64"
-        showEnum FieldDescriptorProto'TYPE_SINT32 = "TYPE_SINT32"
-        showEnum FieldDescriptorProto'TYPE_SINT64 = "TYPE_SINT64"
-        readEnum "TYPE_DOUBLE"
-          = Prelude.Just FieldDescriptorProto'TYPE_DOUBLE
-        readEnum "TYPE_FLOAT"
-          = Prelude.Just FieldDescriptorProto'TYPE_FLOAT
-        readEnum "TYPE_INT64"
-          = Prelude.Just FieldDescriptorProto'TYPE_INT64
-        readEnum "TYPE_UINT64"
-          = Prelude.Just FieldDescriptorProto'TYPE_UINT64
-        readEnum "TYPE_INT32"
-          = Prelude.Just FieldDescriptorProto'TYPE_INT32
-        readEnum "TYPE_FIXED64"
-          = Prelude.Just FieldDescriptorProto'TYPE_FIXED64
-        readEnum "TYPE_FIXED32"
-          = Prelude.Just FieldDescriptorProto'TYPE_FIXED32
-        readEnum "TYPE_BOOL" = Prelude.Just FieldDescriptorProto'TYPE_BOOL
-        readEnum "TYPE_STRING"
-          = Prelude.Just FieldDescriptorProto'TYPE_STRING
-        readEnum "TYPE_GROUP"
-          = Prelude.Just FieldDescriptorProto'TYPE_GROUP
-        readEnum "TYPE_MESSAGE"
-          = Prelude.Just FieldDescriptorProto'TYPE_MESSAGE
-        readEnum "TYPE_BYTES"
-          = Prelude.Just FieldDescriptorProto'TYPE_BYTES
-        readEnum "TYPE_UINT32"
-          = Prelude.Just FieldDescriptorProto'TYPE_UINT32
-        readEnum "TYPE_ENUM" = Prelude.Just FieldDescriptorProto'TYPE_ENUM
-        readEnum "TYPE_SFIXED32"
-          = Prelude.Just FieldDescriptorProto'TYPE_SFIXED32
-        readEnum "TYPE_SFIXED64"
-          = Prelude.Just FieldDescriptorProto'TYPE_SFIXED64
-        readEnum "TYPE_SINT32"
-          = Prelude.Just FieldDescriptorProto'TYPE_SINT32
-        readEnum "TYPE_SINT64"
-          = Prelude.Just FieldDescriptorProto'TYPE_SINT64
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum FieldDescriptorProto'Type where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum Type: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum FieldDescriptorProto'TYPE_DOUBLE = 1
-        fromEnum FieldDescriptorProto'TYPE_FLOAT = 2
-        fromEnum FieldDescriptorProto'TYPE_INT64 = 3
-        fromEnum FieldDescriptorProto'TYPE_UINT64 = 4
-        fromEnum FieldDescriptorProto'TYPE_INT32 = 5
-        fromEnum FieldDescriptorProto'TYPE_FIXED64 = 6
-        fromEnum FieldDescriptorProto'TYPE_FIXED32 = 7
-        fromEnum FieldDescriptorProto'TYPE_BOOL = 8
-        fromEnum FieldDescriptorProto'TYPE_STRING = 9
-        fromEnum FieldDescriptorProto'TYPE_GROUP = 10
-        fromEnum FieldDescriptorProto'TYPE_MESSAGE = 11
-        fromEnum FieldDescriptorProto'TYPE_BYTES = 12
-        fromEnum FieldDescriptorProto'TYPE_UINT32 = 13
-        fromEnum FieldDescriptorProto'TYPE_ENUM = 14
-        fromEnum FieldDescriptorProto'TYPE_SFIXED32 = 15
-        fromEnum FieldDescriptorProto'TYPE_SFIXED64 = 16
-        fromEnum FieldDescriptorProto'TYPE_SINT32 = 17
-        fromEnum FieldDescriptorProto'TYPE_SINT64 = 18
-        succ FieldDescriptorProto'TYPE_SINT64
-          = Prelude.error
-              "FieldDescriptorProto'Type.succ: bad argument FieldDescriptorProto'TYPE_SINT64. This value would be out of bounds."
-        succ FieldDescriptorProto'TYPE_DOUBLE
-          = FieldDescriptorProto'TYPE_FLOAT
-        succ FieldDescriptorProto'TYPE_FLOAT
-          = FieldDescriptorProto'TYPE_INT64
-        succ FieldDescriptorProto'TYPE_INT64
-          = FieldDescriptorProto'TYPE_UINT64
-        succ FieldDescriptorProto'TYPE_UINT64
-          = FieldDescriptorProto'TYPE_INT32
-        succ FieldDescriptorProto'TYPE_INT32
-          = FieldDescriptorProto'TYPE_FIXED64
-        succ FieldDescriptorProto'TYPE_FIXED64
-          = FieldDescriptorProto'TYPE_FIXED32
-        succ FieldDescriptorProto'TYPE_FIXED32
-          = FieldDescriptorProto'TYPE_BOOL
-        succ FieldDescriptorProto'TYPE_BOOL
-          = FieldDescriptorProto'TYPE_STRING
-        succ FieldDescriptorProto'TYPE_STRING
-          = FieldDescriptorProto'TYPE_GROUP
-        succ FieldDescriptorProto'TYPE_GROUP
-          = FieldDescriptorProto'TYPE_MESSAGE
-        succ FieldDescriptorProto'TYPE_MESSAGE
-          = FieldDescriptorProto'TYPE_BYTES
-        succ FieldDescriptorProto'TYPE_BYTES
-          = FieldDescriptorProto'TYPE_UINT32
-        succ FieldDescriptorProto'TYPE_UINT32
-          = FieldDescriptorProto'TYPE_ENUM
-        succ FieldDescriptorProto'TYPE_ENUM
-          = FieldDescriptorProto'TYPE_SFIXED32
-        succ FieldDescriptorProto'TYPE_SFIXED32
-          = FieldDescriptorProto'TYPE_SFIXED64
-        succ FieldDescriptorProto'TYPE_SFIXED64
-          = FieldDescriptorProto'TYPE_SINT32
-        succ FieldDescriptorProto'TYPE_SINT32
-          = FieldDescriptorProto'TYPE_SINT64
-        pred FieldDescriptorProto'TYPE_DOUBLE
-          = Prelude.error
-              "FieldDescriptorProto'Type.pred: bad argument FieldDescriptorProto'TYPE_DOUBLE. This value would be out of bounds."
-        pred FieldDescriptorProto'TYPE_FLOAT
-          = FieldDescriptorProto'TYPE_DOUBLE
-        pred FieldDescriptorProto'TYPE_INT64
-          = FieldDescriptorProto'TYPE_FLOAT
-        pred FieldDescriptorProto'TYPE_UINT64
-          = FieldDescriptorProto'TYPE_INT64
-        pred FieldDescriptorProto'TYPE_INT32
-          = FieldDescriptorProto'TYPE_UINT64
-        pred FieldDescriptorProto'TYPE_FIXED64
-          = FieldDescriptorProto'TYPE_INT32
-        pred FieldDescriptorProto'TYPE_FIXED32
-          = FieldDescriptorProto'TYPE_FIXED64
-        pred FieldDescriptorProto'TYPE_BOOL
-          = FieldDescriptorProto'TYPE_FIXED32
-        pred FieldDescriptorProto'TYPE_STRING
-          = FieldDescriptorProto'TYPE_BOOL
-        pred FieldDescriptorProto'TYPE_GROUP
-          = FieldDescriptorProto'TYPE_STRING
-        pred FieldDescriptorProto'TYPE_MESSAGE
-          = FieldDescriptorProto'TYPE_GROUP
-        pred FieldDescriptorProto'TYPE_BYTES
-          = FieldDescriptorProto'TYPE_MESSAGE
-        pred FieldDescriptorProto'TYPE_UINT32
-          = FieldDescriptorProto'TYPE_BYTES
-        pred FieldDescriptorProto'TYPE_ENUM
-          = FieldDescriptorProto'TYPE_UINT32
-        pred FieldDescriptorProto'TYPE_SFIXED32
-          = FieldDescriptorProto'TYPE_ENUM
-        pred FieldDescriptorProto'TYPE_SFIXED64
-          = FieldDescriptorProto'TYPE_SFIXED32
-        pred FieldDescriptorProto'TYPE_SINT32
-          = FieldDescriptorProto'TYPE_SFIXED64
-        pred FieldDescriptorProto'TYPE_SINT64
-          = FieldDescriptorProto'TYPE_SINT32
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded FieldDescriptorProto'Type where
-        minBound = FieldDescriptorProto'TYPE_DOUBLE
-        maxBound = FieldDescriptorProto'TYPE_SINT64
-instance Control.DeepSeq.NFData FieldDescriptorProto'Type where
-        rnf x__ = Prelude.seq x__ (())
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.ctype' @:: Lens' FieldOptions FieldOptions'CType@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ctype' @:: Lens' FieldOptions (Prelude.Maybe FieldOptions'CType)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.packed' @:: Lens' FieldOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'packed' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.jstype' @:: Lens' FieldOptions FieldOptions'JSType@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'jstype' @:: Lens' FieldOptions (Prelude.Maybe FieldOptions'JSType)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.lazy' @:: Lens' FieldOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'lazy' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' FieldOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.weak' @:: Lens' FieldOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'weak' @:: Lens' FieldOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' FieldOptions [UninterpretedOption]@
- -}
-data FieldOptions = FieldOptions{_FieldOptions'ctype ::
-                                 !(Prelude.Maybe FieldOptions'CType),
-                                 _FieldOptions'packed :: !(Prelude.Maybe Prelude.Bool),
-                                 _FieldOptions'jstype :: !(Prelude.Maybe FieldOptions'JSType),
-                                 _FieldOptions'lazy :: !(Prelude.Maybe Prelude.Bool),
-                                 _FieldOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),
-                                 _FieldOptions'weak :: !(Prelude.Maybe Prelude.Bool),
-                                 _FieldOptions'uninterpretedOption :: ![UninterpretedOption],
-                                 _FieldOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                      deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show FieldOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' FieldOptions "ctype"
-           (FieldOptions'CType)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'ctype
-                 (\ x__ y__ -> x__{_FieldOptions'ctype = y__}))
-              (Data.ProtoLens.maybeLens FieldOptions'STRING)
-instance Lens.Labels.HasLens' FieldOptions "maybe'ctype"
-           (Prelude.Maybe FieldOptions'CType)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'ctype
-                 (\ x__ y__ -> x__{_FieldOptions'ctype = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "packed" (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'packed
-                 (\ x__ y__ -> x__{_FieldOptions'packed = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FieldOptions "maybe'packed"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'packed
-                 (\ x__ y__ -> x__{_FieldOptions'packed = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "jstype"
-           (FieldOptions'JSType)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'jstype
-                 (\ x__ y__ -> x__{_FieldOptions'jstype = y__}))
-              (Data.ProtoLens.maybeLens FieldOptions'JS_NORMAL)
-instance Lens.Labels.HasLens' FieldOptions "maybe'jstype"
-           (Prelude.Maybe FieldOptions'JSType)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'jstype
-                 (\ x__ y__ -> x__{_FieldOptions'jstype = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "lazy" (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'lazy
-                 (\ x__ y__ -> x__{_FieldOptions'lazy = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FieldOptions "maybe'lazy"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'lazy
-                 (\ x__ y__ -> x__{_FieldOptions'lazy = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'deprecated
-                 (\ x__ y__ -> x__{_FieldOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FieldOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'deprecated
-                 (\ x__ y__ -> x__{_FieldOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "weak" (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'weak
-                 (\ x__ y__ -> x__{_FieldOptions'weak = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FieldOptions "maybe'weak"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'weak
-                 (\ x__ y__ -> x__{_FieldOptions'weak = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FieldOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FieldOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_FieldOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message FieldOptions where
-        messageName _ = Data.Text.pack "google.protobuf.FieldOptions"
-        fieldsByTag
-          = let ctype__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "ctype"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldOptions'CType)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'ctype")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                packed__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "packed"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'packed")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                jstype__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "jstype"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldOptions'JSType)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'jstype")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                lazy__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "lazy"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'lazy")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                weak__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "weak"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'weak")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor FieldOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, ctype__field_descriptor),
-                 (Data.ProtoLens.Tag 2, packed__field_descriptor),
-                 (Data.ProtoLens.Tag 6, jstype__field_descriptor),
-                 (Data.ProtoLens.Tag 5, lazy__field_descriptor),
-                 (Data.ProtoLens.Tag 3, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 10, weak__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _FieldOptions'_unknownFields
-              (\ x__ y__ -> x__{_FieldOptions'_unknownFields = y__})
-        defMessage
-          = FieldOptions{_FieldOptions'ctype = Prelude.Nothing,
-                         _FieldOptions'packed = Prelude.Nothing,
-                         _FieldOptions'jstype = Prelude.Nothing,
-                         _FieldOptions'lazy = Prelude.Nothing,
-                         _FieldOptions'deprecated = Prelude.Nothing,
-                         _FieldOptions'weak = Prelude.Nothing,
-                         _FieldOptions'uninterpretedOption = [],
-                         _FieldOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData FieldOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_FieldOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_FieldOptions'ctype x__)
-                   (Control.DeepSeq.deepseq (_FieldOptions'packed x__)
-                      (Control.DeepSeq.deepseq (_FieldOptions'jstype x__)
-                         (Control.DeepSeq.deepseq (_FieldOptions'lazy x__)
-                            (Control.DeepSeq.deepseq (_FieldOptions'deprecated x__)
-                               (Control.DeepSeq.deepseq (_FieldOptions'weak x__)
-                                  (Control.DeepSeq.deepseq (_FieldOptions'uninterpretedOption x__)
-                                     (()))))))))
-data FieldOptions'CType = FieldOptions'STRING
-                        | FieldOptions'CORD
-                        | FieldOptions'STRING_PIECE
-                            deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault FieldOptions'CType where
-        fieldDefault = FieldOptions'STRING
-instance Data.ProtoLens.MessageEnum FieldOptions'CType where
-        maybeToEnum 0 = Prelude.Just FieldOptions'STRING
-        maybeToEnum 1 = Prelude.Just FieldOptions'CORD
-        maybeToEnum 2 = Prelude.Just FieldOptions'STRING_PIECE
-        maybeToEnum _ = Prelude.Nothing
-        showEnum FieldOptions'STRING = "STRING"
-        showEnum FieldOptions'CORD = "CORD"
-        showEnum FieldOptions'STRING_PIECE = "STRING_PIECE"
-        readEnum "STRING" = Prelude.Just FieldOptions'STRING
-        readEnum "CORD" = Prelude.Just FieldOptions'CORD
-        readEnum "STRING_PIECE" = Prelude.Just FieldOptions'STRING_PIECE
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum FieldOptions'CType where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum CType: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum FieldOptions'STRING = 0
-        fromEnum FieldOptions'CORD = 1
-        fromEnum FieldOptions'STRING_PIECE = 2
-        succ FieldOptions'STRING_PIECE
-          = Prelude.error
-              "FieldOptions'CType.succ: bad argument FieldOptions'STRING_PIECE. This value would be out of bounds."
-        succ FieldOptions'STRING = FieldOptions'CORD
-        succ FieldOptions'CORD = FieldOptions'STRING_PIECE
-        pred FieldOptions'STRING
-          = Prelude.error
-              "FieldOptions'CType.pred: bad argument FieldOptions'STRING. This value would be out of bounds."
-        pred FieldOptions'CORD = FieldOptions'STRING
-        pred FieldOptions'STRING_PIECE = FieldOptions'CORD
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded FieldOptions'CType where
-        minBound = FieldOptions'STRING
-        maxBound = FieldOptions'STRING_PIECE
-instance Control.DeepSeq.NFData FieldOptions'CType where
-        rnf x__ = Prelude.seq x__ (())
-data FieldOptions'JSType = FieldOptions'JS_NORMAL
-                         | FieldOptions'JS_STRING
-                         | FieldOptions'JS_NUMBER
-                             deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault FieldOptions'JSType where
-        fieldDefault = FieldOptions'JS_NORMAL
-instance Data.ProtoLens.MessageEnum FieldOptions'JSType where
-        maybeToEnum 0 = Prelude.Just FieldOptions'JS_NORMAL
-        maybeToEnum 1 = Prelude.Just FieldOptions'JS_STRING
-        maybeToEnum 2 = Prelude.Just FieldOptions'JS_NUMBER
-        maybeToEnum _ = Prelude.Nothing
-        showEnum FieldOptions'JS_NORMAL = "JS_NORMAL"
-        showEnum FieldOptions'JS_STRING = "JS_STRING"
-        showEnum FieldOptions'JS_NUMBER = "JS_NUMBER"
-        readEnum "JS_NORMAL" = Prelude.Just FieldOptions'JS_NORMAL
-        readEnum "JS_STRING" = Prelude.Just FieldOptions'JS_STRING
-        readEnum "JS_NUMBER" = Prelude.Just FieldOptions'JS_NUMBER
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum FieldOptions'JSType where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum JSType: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum FieldOptions'JS_NORMAL = 0
-        fromEnum FieldOptions'JS_STRING = 1
-        fromEnum FieldOptions'JS_NUMBER = 2
-        succ FieldOptions'JS_NUMBER
-          = Prelude.error
-              "FieldOptions'JSType.succ: bad argument FieldOptions'JS_NUMBER. This value would be out of bounds."
-        succ FieldOptions'JS_NORMAL = FieldOptions'JS_STRING
-        succ FieldOptions'JS_STRING = FieldOptions'JS_NUMBER
-        pred FieldOptions'JS_NORMAL
-          = Prelude.error
-              "FieldOptions'JSType.pred: bad argument FieldOptions'JS_NORMAL. This value would be out of bounds."
-        pred FieldOptions'JS_STRING = FieldOptions'JS_NORMAL
-        pred FieldOptions'JS_NUMBER = FieldOptions'JS_STRING
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded FieldOptions'JSType where
-        minBound = FieldOptions'JS_NORMAL
-        maxBound = FieldOptions'JS_NUMBER
-instance Control.DeepSeq.NFData FieldOptions'JSType where
-        rnf x__ = Prelude.seq x__ (())
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' FileDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.package' @:: Lens' FileDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'package' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.dependency' @:: Lens' FileDescriptorProto [Data.Text.Text]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.publicDependency' @:: Lens' FileDescriptorProto [Data.Int.Int32]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.weakDependency' @:: Lens' FileDescriptorProto [Data.Int.Int32]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.messageType' @:: Lens' FileDescriptorProto [DescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.enumType' @:: Lens' FileDescriptorProto [EnumDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.service' @:: Lens' FileDescriptorProto [ServiceDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.extension' @:: Lens' FileDescriptorProto [FieldDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' FileDescriptorProto FileOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' FileDescriptorProto (Prelude.Maybe FileOptions)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.sourceCodeInfo' @:: Lens' FileDescriptorProto SourceCodeInfo@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'sourceCodeInfo' @:: Lens' FileDescriptorProto (Prelude.Maybe SourceCodeInfo)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.syntax' @:: Lens' FileDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'syntax' @:: Lens' FileDescriptorProto (Prelude.Maybe Data.Text.Text)@
- -}
-data FileDescriptorProto = FileDescriptorProto{_FileDescriptorProto'name
-                                               :: !(Prelude.Maybe Data.Text.Text),
-                                               _FileDescriptorProto'package ::
-                                               !(Prelude.Maybe Data.Text.Text),
-                                               _FileDescriptorProto'dependency :: ![Data.Text.Text],
-                                               _FileDescriptorProto'publicDependency ::
-                                               ![Data.Int.Int32],
-                                               _FileDescriptorProto'weakDependency ::
-                                               ![Data.Int.Int32],
-                                               _FileDescriptorProto'messageType ::
-                                               ![DescriptorProto],
-                                               _FileDescriptorProto'enumType ::
-                                               ![EnumDescriptorProto],
-                                               _FileDescriptorProto'service ::
-                                               ![ServiceDescriptorProto],
-                                               _FileDescriptorProto'extension ::
-                                               ![FieldDescriptorProto],
-                                               _FileDescriptorProto'options ::
-                                               !(Prelude.Maybe FileOptions),
-                                               _FileDescriptorProto'sourceCodeInfo ::
-                                               !(Prelude.Maybe SourceCodeInfo),
-                                               _FileDescriptorProto'syntax ::
-                                               !(Prelude.Maybe Data.Text.Text),
-                                               _FileDescriptorProto'_unknownFields ::
-                                               !Data.ProtoLens.FieldSet}
-                             deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show FileDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' FileDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'name
-                 (\ x__ y__ -> x__{_FileDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'name
-                 (\ x__ y__ -> x__{_FileDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "package"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'package
-                 (\ x__ y__ -> x__{_FileDescriptorProto'package = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileDescriptorProto "maybe'package"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'package
-                 (\ x__ y__ -> x__{_FileDescriptorProto'package = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "dependency"
-           ([Data.Text.Text])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'dependency
-                 (\ x__ y__ -> x__{_FileDescriptorProto'dependency = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto
-           "publicDependency"
-           ([Data.Int.Int32])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'publicDependency
-                 (\ x__ y__ -> x__{_FileDescriptorProto'publicDependency = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "weakDependency"
-           ([Data.Int.Int32])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'weakDependency
-                 (\ x__ y__ -> x__{_FileDescriptorProto'weakDependency = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "messageType"
-           ([DescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'messageType
-                 (\ x__ y__ -> x__{_FileDescriptorProto'messageType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "enumType"
-           ([EnumDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'enumType
-                 (\ x__ y__ -> x__{_FileDescriptorProto'enumType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "service"
-           ([ServiceDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'service
-                 (\ x__ y__ -> x__{_FileDescriptorProto'service = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "extension"
-           ([FieldDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'extension
-                 (\ x__ y__ -> x__{_FileDescriptorProto'extension = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "options"
-           (FileOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'options
-                 (\ x__ y__ -> x__{_FileDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' FileDescriptorProto "maybe'options"
-           (Prelude.Maybe FileOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'options
-                 (\ x__ y__ -> x__{_FileDescriptorProto'options = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "sourceCodeInfo"
-           (SourceCodeInfo)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'sourceCodeInfo
-                 (\ x__ y__ -> x__{_FileDescriptorProto'sourceCodeInfo = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' FileDescriptorProto
-           "maybe'sourceCodeInfo"
-           (Prelude.Maybe SourceCodeInfo)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'sourceCodeInfo
-                 (\ x__ y__ -> x__{_FileDescriptorProto'sourceCodeInfo = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileDescriptorProto "syntax"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'syntax
-                 (\ x__ y__ -> x__{_FileDescriptorProto'syntax = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileDescriptorProto "maybe'syntax"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorProto'syntax
-                 (\ x__ y__ -> x__{_FileDescriptorProto'syntax = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message FileDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.FileDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                package__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "package"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'package")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                dependency__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "dependency"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dependency")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                publicDependency__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "public_dependency"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "publicDependency")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                weakDependency__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "weak_dependency"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "weakDependency")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                messageType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "message_type"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor DescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "messageType")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                enumType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "enum_type"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor EnumDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enumType")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                service__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "service"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor ServiceDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "service")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                extension__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "extension"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FieldDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extension")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FileOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                sourceCodeInfo__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "source_code_info"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'sourceCodeInfo")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-                syntax__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "syntax"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'syntax")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, package__field_descriptor),
-                 (Data.ProtoLens.Tag 3, dependency__field_descriptor),
-                 (Data.ProtoLens.Tag 10, publicDependency__field_descriptor),
-                 (Data.ProtoLens.Tag 11, weakDependency__field_descriptor),
-                 (Data.ProtoLens.Tag 4, messageType__field_descriptor),
-                 (Data.ProtoLens.Tag 5, enumType__field_descriptor),
-                 (Data.ProtoLens.Tag 6, service__field_descriptor),
-                 (Data.ProtoLens.Tag 7, extension__field_descriptor),
-                 (Data.ProtoLens.Tag 8, options__field_descriptor),
-                 (Data.ProtoLens.Tag 9, sourceCodeInfo__field_descriptor),
-                 (Data.ProtoLens.Tag 12, syntax__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _FileDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_FileDescriptorProto'_unknownFields = y__})
-        defMessage
-          = FileDescriptorProto{_FileDescriptorProto'name = Prelude.Nothing,
-                                _FileDescriptorProto'package = Prelude.Nothing,
-                                _FileDescriptorProto'dependency = [],
-                                _FileDescriptorProto'publicDependency = [],
-                                _FileDescriptorProto'weakDependency = [],
-                                _FileDescriptorProto'messageType = [],
-                                _FileDescriptorProto'enumType = [],
-                                _FileDescriptorProto'service = [],
-                                _FileDescriptorProto'extension = [],
-                                _FileDescriptorProto'options = Prelude.Nothing,
-                                _FileDescriptorProto'sourceCodeInfo = Prelude.Nothing,
-                                _FileDescriptorProto'syntax = Prelude.Nothing,
-                                _FileDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData FileDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_FileDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_FileDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_FileDescriptorProto'package x__)
-                      (Control.DeepSeq.deepseq (_FileDescriptorProto'dependency x__)
-                         (Control.DeepSeq.deepseq
-                            (_FileDescriptorProto'publicDependency x__)
-                            (Control.DeepSeq.deepseq (_FileDescriptorProto'weakDependency x__)
-                               (Control.DeepSeq.deepseq (_FileDescriptorProto'messageType x__)
-                                  (Control.DeepSeq.deepseq (_FileDescriptorProto'enumType x__)
-                                     (Control.DeepSeq.deepseq (_FileDescriptorProto'service x__)
-                                        (Control.DeepSeq.deepseq
-                                           (_FileDescriptorProto'extension x__)
-                                           (Control.DeepSeq.deepseq
-                                              (_FileDescriptorProto'options x__)
-                                              (Control.DeepSeq.deepseq
-                                                 (_FileDescriptorProto'sourceCodeInfo x__)
-                                                 (Control.DeepSeq.deepseq
-                                                    (_FileDescriptorProto'syntax x__)
-                                                    (())))))))))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.file' @:: Lens' FileDescriptorSet [FileDescriptorProto]@
- -}
-data FileDescriptorSet = FileDescriptorSet{_FileDescriptorSet'file
-                                           :: ![FileDescriptorProto],
-                                           _FileDescriptorSet'_unknownFields ::
-                                           !Data.ProtoLens.FieldSet}
-                           deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show FileDescriptorSet where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' FileDescriptorSet "file"
-           ([FileDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileDescriptorSet'file
-                 (\ x__ y__ -> x__{_FileDescriptorSet'file = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message FileDescriptorSet where
-        messageName _ = Data.Text.pack "google.protobuf.FileDescriptorSet"
-        fieldsByTag
-          = let file__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "file"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor FileDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "file")))
-                      :: Data.ProtoLens.FieldDescriptor FileDescriptorSet
-              in
-              Data.Map.fromList [(Data.ProtoLens.Tag 1, file__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _FileDescriptorSet'_unknownFields
-              (\ x__ y__ -> x__{_FileDescriptorSet'_unknownFields = y__})
-        defMessage
-          = FileDescriptorSet{_FileDescriptorSet'file = [],
-                              _FileDescriptorSet'_unknownFields = ([])}
-instance Control.DeepSeq.NFData FileDescriptorSet where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_FileDescriptorSet'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_FileDescriptorSet'file x__) (()))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaPackage' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaOuterClassname' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaOuterClassname' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaMultipleFiles' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaMultipleFiles' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaGenerateEqualsAndHash' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaGenerateEqualsAndHash' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaStringCheckUtf8' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaStringCheckUtf8' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.optimizeFor' @:: Lens' FileOptions FileOptions'OptimizeMode@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'optimizeFor' @:: Lens' FileOptions (Prelude.Maybe FileOptions'OptimizeMode)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.goPackage' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'goPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.ccGenericServices' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ccGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.javaGenericServices' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'javaGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.pyGenericServices' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'pyGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.phpGenericServices' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpGenericServices' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.ccEnableArenas' @:: Lens' FileOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'ccEnableArenas' @:: Lens' FileOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.objcClassPrefix' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'objcClassPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.csharpNamespace' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'csharpNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.swiftPrefix' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'swiftPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.phpClassPrefix' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpClassPrefix' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.phpNamespace' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.phpMetadataNamespace' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'phpMetadataNamespace' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.rubyPackage' @:: Lens' FileOptions Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'rubyPackage' @:: Lens' FileOptions (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' FileOptions [UninterpretedOption]@
- -}
-data FileOptions = FileOptions{_FileOptions'javaPackage ::
-                               !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'javaOuterClassname :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'javaMultipleFiles :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'javaGenerateEqualsAndHash ::
-                               !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'javaStringCheckUtf8 :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'optimizeFor ::
-                               !(Prelude.Maybe FileOptions'OptimizeMode),
-                               _FileOptions'goPackage :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'ccGenericServices :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'javaGenericServices :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'pyGenericServices :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'phpGenericServices :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'ccEnableArenas :: !(Prelude.Maybe Prelude.Bool),
-                               _FileOptions'objcClassPrefix :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'csharpNamespace :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'swiftPrefix :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'phpClassPrefix :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'phpNamespace :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'phpMetadataNamespace ::
-                               !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'rubyPackage :: !(Prelude.Maybe Data.Text.Text),
-                               _FileOptions'uninterpretedOption :: ![UninterpretedOption],
-                               _FileOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                     deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show FileOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' FileOptions "javaPackage"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaPackage
-                 (\ x__ y__ -> x__{_FileOptions'javaPackage = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'javaPackage"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaPackage
-                 (\ x__ y__ -> x__{_FileOptions'javaPackage = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "javaOuterClassname"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaOuterClassname
-                 (\ x__ y__ -> x__{_FileOptions'javaOuterClassname = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'javaOuterClassname"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaOuterClassname
-                 (\ x__ y__ -> x__{_FileOptions'javaOuterClassname = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "javaMultipleFiles"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaMultipleFiles
-                 (\ x__ y__ -> x__{_FileOptions'javaMultipleFiles = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions "maybe'javaMultipleFiles"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaMultipleFiles
-                 (\ x__ y__ -> x__{_FileOptions'javaMultipleFiles = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions
-           "javaGenerateEqualsAndHash"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaGenerateEqualsAndHash
-                 (\ x__ y__ -> x__{_FileOptions'javaGenerateEqualsAndHash = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'javaGenerateEqualsAndHash"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaGenerateEqualsAndHash
-                 (\ x__ y__ -> x__{_FileOptions'javaGenerateEqualsAndHash = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "javaStringCheckUtf8"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaStringCheckUtf8
-                 (\ x__ y__ -> x__{_FileOptions'javaStringCheckUtf8 = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'javaStringCheckUtf8"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaStringCheckUtf8
-                 (\ x__ y__ -> x__{_FileOptions'javaStringCheckUtf8 = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "optimizeFor"
-           (FileOptions'OptimizeMode)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'optimizeFor
-                 (\ x__ y__ -> x__{_FileOptions'optimizeFor = y__}))
-              (Data.ProtoLens.maybeLens FileOptions'SPEED)
-instance Lens.Labels.HasLens' FileOptions "maybe'optimizeFor"
-           (Prelude.Maybe FileOptions'OptimizeMode)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'optimizeFor
-                 (\ x__ y__ -> x__{_FileOptions'optimizeFor = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "goPackage"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'goPackage
-                 (\ x__ y__ -> x__{_FileOptions'goPackage = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'goPackage"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'goPackage
-                 (\ x__ y__ -> x__{_FileOptions'goPackage = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "ccGenericServices"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'ccGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'ccGenericServices = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions "maybe'ccGenericServices"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'ccGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'ccGenericServices = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "javaGenericServices"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'javaGenericServices = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'javaGenericServices"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'javaGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'javaGenericServices = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "pyGenericServices"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'pyGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'pyGenericServices = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions "maybe'pyGenericServices"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'pyGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'pyGenericServices = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "phpGenericServices"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'phpGenericServices = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'phpGenericServices"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpGenericServices
-                 (\ x__ y__ -> x__{_FileOptions'phpGenericServices = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'deprecated
-                 (\ x__ y__ -> x__{_FileOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'deprecated
-                 (\ x__ y__ -> x__{_FileOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "ccEnableArenas"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'ccEnableArenas
-                 (\ x__ y__ -> x__{_FileOptions'ccEnableArenas = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' FileOptions "maybe'ccEnableArenas"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'ccEnableArenas
-                 (\ x__ y__ -> x__{_FileOptions'ccEnableArenas = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "objcClassPrefix"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'objcClassPrefix
-                 (\ x__ y__ -> x__{_FileOptions'objcClassPrefix = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'objcClassPrefix"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'objcClassPrefix
-                 (\ x__ y__ -> x__{_FileOptions'objcClassPrefix = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "csharpNamespace"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'csharpNamespace
-                 (\ x__ y__ -> x__{_FileOptions'csharpNamespace = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'csharpNamespace"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'csharpNamespace
-                 (\ x__ y__ -> x__{_FileOptions'csharpNamespace = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "swiftPrefix"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'swiftPrefix
-                 (\ x__ y__ -> x__{_FileOptions'swiftPrefix = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'swiftPrefix"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'swiftPrefix
-                 (\ x__ y__ -> x__{_FileOptions'swiftPrefix = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "phpClassPrefix"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpClassPrefix
-                 (\ x__ y__ -> x__{_FileOptions'phpClassPrefix = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'phpClassPrefix"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpClassPrefix
-                 (\ x__ y__ -> x__{_FileOptions'phpClassPrefix = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "phpNamespace"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpNamespace
-                 (\ x__ y__ -> x__{_FileOptions'phpNamespace = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'phpNamespace"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpNamespace
-                 (\ x__ y__ -> x__{_FileOptions'phpNamespace = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "phpMetadataNamespace"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpMetadataNamespace
-                 (\ x__ y__ -> x__{_FileOptions'phpMetadataNamespace = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions
-           "maybe'phpMetadataNamespace"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'phpMetadataNamespace
-                 (\ x__ y__ -> x__{_FileOptions'phpMetadataNamespace = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "rubyPackage"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'rubyPackage
-                 (\ x__ y__ -> x__{_FileOptions'rubyPackage = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' FileOptions "maybe'rubyPackage"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'rubyPackage
-                 (\ x__ y__ -> x__{_FileOptions'rubyPackage = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' FileOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _FileOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_FileOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message FileOptions where
-        messageName _ = Data.Text.pack "google.protobuf.FileOptions"
-        fieldsByTag
-          = let javaPackage__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_package"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaPackage")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                javaOuterClassname__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_outer_classname"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaOuterClassname")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                javaMultipleFiles__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_multiple_files"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaMultipleFiles")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                javaGenerateEqualsAndHash__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_generate_equals_and_hash"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaGenerateEqualsAndHash")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                javaStringCheckUtf8__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_string_check_utf8"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaStringCheckUtf8")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                optimizeFor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "optimize_for"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor FileOptions'OptimizeMode)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'optimizeFor")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                goPackage__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "go_package"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'goPackage")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                ccGenericServices__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "cc_generic_services"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'ccGenericServices")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                javaGenericServices__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "java_generic_services"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'javaGenericServices")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                pyGenericServices__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "py_generic_services"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'pyGenericServices")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                phpGenericServices__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "php_generic_services"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'phpGenericServices")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                ccEnableArenas__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "cc_enable_arenas"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'ccEnableArenas")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                objcClassPrefix__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "objc_class_prefix"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'objcClassPrefix")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                csharpNamespace__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "csharp_namespace"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'csharpNamespace")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                swiftPrefix__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "swift_prefix"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'swiftPrefix")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                phpClassPrefix__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "php_class_prefix"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'phpClassPrefix")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                phpNamespace__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "php_namespace"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'phpNamespace")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                phpMetadataNamespace__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "php_metadata_namespace"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'phpMetadataNamespace")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                rubyPackage__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "ruby_package"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'rubyPackage")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor FileOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, javaPackage__field_descriptor),
-                 (Data.ProtoLens.Tag 8, javaOuterClassname__field_descriptor),
-                 (Data.ProtoLens.Tag 10, javaMultipleFiles__field_descriptor),
-                 (Data.ProtoLens.Tag 20,
-                  javaGenerateEqualsAndHash__field_descriptor),
-                 (Data.ProtoLens.Tag 27, javaStringCheckUtf8__field_descriptor),
-                 (Data.ProtoLens.Tag 9, optimizeFor__field_descriptor),
-                 (Data.ProtoLens.Tag 11, goPackage__field_descriptor),
-                 (Data.ProtoLens.Tag 16, ccGenericServices__field_descriptor),
-                 (Data.ProtoLens.Tag 17, javaGenericServices__field_descriptor),
-                 (Data.ProtoLens.Tag 18, pyGenericServices__field_descriptor),
-                 (Data.ProtoLens.Tag 42, phpGenericServices__field_descriptor),
-                 (Data.ProtoLens.Tag 23, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 31, ccEnableArenas__field_descriptor),
-                 (Data.ProtoLens.Tag 36, objcClassPrefix__field_descriptor),
-                 (Data.ProtoLens.Tag 37, csharpNamespace__field_descriptor),
-                 (Data.ProtoLens.Tag 39, swiftPrefix__field_descriptor),
-                 (Data.ProtoLens.Tag 40, phpClassPrefix__field_descriptor),
-                 (Data.ProtoLens.Tag 41, phpNamespace__field_descriptor),
-                 (Data.ProtoLens.Tag 44, phpMetadataNamespace__field_descriptor),
-                 (Data.ProtoLens.Tag 45, rubyPackage__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _FileOptions'_unknownFields
-              (\ x__ y__ -> x__{_FileOptions'_unknownFields = y__})
-        defMessage
-          = FileOptions{_FileOptions'javaPackage = Prelude.Nothing,
-                        _FileOptions'javaOuterClassname = Prelude.Nothing,
-                        _FileOptions'javaMultipleFiles = Prelude.Nothing,
-                        _FileOptions'javaGenerateEqualsAndHash = Prelude.Nothing,
-                        _FileOptions'javaStringCheckUtf8 = Prelude.Nothing,
-                        _FileOptions'optimizeFor = Prelude.Nothing,
-                        _FileOptions'goPackage = Prelude.Nothing,
-                        _FileOptions'ccGenericServices = Prelude.Nothing,
-                        _FileOptions'javaGenericServices = Prelude.Nothing,
-                        _FileOptions'pyGenericServices = Prelude.Nothing,
-                        _FileOptions'phpGenericServices = Prelude.Nothing,
-                        _FileOptions'deprecated = Prelude.Nothing,
-                        _FileOptions'ccEnableArenas = Prelude.Nothing,
-                        _FileOptions'objcClassPrefix = Prelude.Nothing,
-                        _FileOptions'csharpNamespace = Prelude.Nothing,
-                        _FileOptions'swiftPrefix = Prelude.Nothing,
-                        _FileOptions'phpClassPrefix = Prelude.Nothing,
-                        _FileOptions'phpNamespace = Prelude.Nothing,
-                        _FileOptions'phpMetadataNamespace = Prelude.Nothing,
-                        _FileOptions'rubyPackage = Prelude.Nothing,
-                        _FileOptions'uninterpretedOption = [],
-                        _FileOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData FileOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_FileOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_FileOptions'javaPackage x__)
-                   (Control.DeepSeq.deepseq (_FileOptions'javaOuterClassname x__)
-                      (Control.DeepSeq.deepseq (_FileOptions'javaMultipleFiles x__)
-                         (Control.DeepSeq.deepseq
-                            (_FileOptions'javaGenerateEqualsAndHash x__)
-                            (Control.DeepSeq.deepseq (_FileOptions'javaStringCheckUtf8 x__)
-                               (Control.DeepSeq.deepseq (_FileOptions'optimizeFor x__)
-                                  (Control.DeepSeq.deepseq (_FileOptions'goPackage x__)
-                                     (Control.DeepSeq.deepseq (_FileOptions'ccGenericServices x__)
-                                        (Control.DeepSeq.deepseq
-                                           (_FileOptions'javaGenericServices x__)
-                                           (Control.DeepSeq.deepseq
-                                              (_FileOptions'pyGenericServices x__)
-                                              (Control.DeepSeq.deepseq
-                                                 (_FileOptions'phpGenericServices x__)
-                                                 (Control.DeepSeq.deepseq
-                                                    (_FileOptions'deprecated x__)
-                                                    (Control.DeepSeq.deepseq
-                                                       (_FileOptions'ccEnableArenas x__)
-                                                       (Control.DeepSeq.deepseq
-                                                          (_FileOptions'objcClassPrefix x__)
-                                                          (Control.DeepSeq.deepseq
-                                                             (_FileOptions'csharpNamespace x__)
-                                                             (Control.DeepSeq.deepseq
-                                                                (_FileOptions'swiftPrefix x__)
-                                                                (Control.DeepSeq.deepseq
-                                                                   (_FileOptions'phpClassPrefix x__)
-                                                                   (Control.DeepSeq.deepseq
-                                                                      (_FileOptions'phpNamespace
-                                                                         x__)
-                                                                      (Control.DeepSeq.deepseq
-                                                                         (_FileOptions'phpMetadataNamespace
-                                                                            x__)
-                                                                         (Control.DeepSeq.deepseq
-                                                                            (_FileOptions'rubyPackage
-                                                                               x__)
-                                                                            (Control.DeepSeq.deepseq
-                                                                               (_FileOptions'uninterpretedOption
-                                                                                  x__)
-                                                                               (()))))))))))))))))))))))
-data FileOptions'OptimizeMode = FileOptions'SPEED
-                              | FileOptions'CODE_SIZE
-                              | FileOptions'LITE_RUNTIME
-                                  deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault FileOptions'OptimizeMode where
-        fieldDefault = FileOptions'SPEED
-instance Data.ProtoLens.MessageEnum FileOptions'OptimizeMode where
-        maybeToEnum 1 = Prelude.Just FileOptions'SPEED
-        maybeToEnum 2 = Prelude.Just FileOptions'CODE_SIZE
-        maybeToEnum 3 = Prelude.Just FileOptions'LITE_RUNTIME
-        maybeToEnum _ = Prelude.Nothing
-        showEnum FileOptions'SPEED = "SPEED"
-        showEnum FileOptions'CODE_SIZE = "CODE_SIZE"
-        showEnum FileOptions'LITE_RUNTIME = "LITE_RUNTIME"
-        readEnum "SPEED" = Prelude.Just FileOptions'SPEED
-        readEnum "CODE_SIZE" = Prelude.Just FileOptions'CODE_SIZE
-        readEnum "LITE_RUNTIME" = Prelude.Just FileOptions'LITE_RUNTIME
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum FileOptions'OptimizeMode where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum OptimizeMode: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum FileOptions'SPEED = 1
-        fromEnum FileOptions'CODE_SIZE = 2
-        fromEnum FileOptions'LITE_RUNTIME = 3
-        succ FileOptions'LITE_RUNTIME
-          = Prelude.error
-              "FileOptions'OptimizeMode.succ: bad argument FileOptions'LITE_RUNTIME. This value would be out of bounds."
-        succ FileOptions'SPEED = FileOptions'CODE_SIZE
-        succ FileOptions'CODE_SIZE = FileOptions'LITE_RUNTIME
-        pred FileOptions'SPEED
-          = Prelude.error
-              "FileOptions'OptimizeMode.pred: bad argument FileOptions'SPEED. This value would be out of bounds."
-        pred FileOptions'CODE_SIZE = FileOptions'SPEED
-        pred FileOptions'LITE_RUNTIME = FileOptions'CODE_SIZE
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded FileOptions'OptimizeMode where
-        minBound = FileOptions'SPEED
-        maxBound = FileOptions'LITE_RUNTIME
-instance Control.DeepSeq.NFData FileOptions'OptimizeMode where
-        rnf x__ = Prelude.seq x__ (())
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.annotation' @:: Lens' GeneratedCodeInfo [GeneratedCodeInfo'Annotation]@
- -}
-data GeneratedCodeInfo = GeneratedCodeInfo{_GeneratedCodeInfo'annotation
-                                           :: ![GeneratedCodeInfo'Annotation],
-                                           _GeneratedCodeInfo'_unknownFields ::
-                                           !Data.ProtoLens.FieldSet}
-                           deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show GeneratedCodeInfo where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' GeneratedCodeInfo "annotation"
-           ([GeneratedCodeInfo'Annotation])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'annotation
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'annotation = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message GeneratedCodeInfo where
-        messageName _ = Data.Text.pack "google.protobuf.GeneratedCodeInfo"
-        fieldsByTag
-          = let annotation__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "annotation"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor GeneratedCodeInfo'Annotation)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "annotation")))
-                      :: Data.ProtoLens.FieldDescriptor GeneratedCodeInfo
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, annotation__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _GeneratedCodeInfo'_unknownFields
-              (\ x__ y__ -> x__{_GeneratedCodeInfo'_unknownFields = y__})
-        defMessage
-          = GeneratedCodeInfo{_GeneratedCodeInfo'annotation = [],
-                              _GeneratedCodeInfo'_unknownFields = ([])}
-instance Control.DeepSeq.NFData GeneratedCodeInfo where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_GeneratedCodeInfo'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_GeneratedCodeInfo'annotation x__) (()))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.path' @:: Lens' GeneratedCodeInfo'Annotation [Data.Int.Int32]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.sourceFile' @:: Lens' GeneratedCodeInfo'Annotation Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'sourceFile' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.begin' @:: Lens' GeneratedCodeInfo'Annotation Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'begin' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Int.Int32)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.end' @:: Lens' GeneratedCodeInfo'Annotation Data.Int.Int32@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'end' @:: Lens' GeneratedCodeInfo'Annotation (Prelude.Maybe Data.Int.Int32)@
- -}
-data GeneratedCodeInfo'Annotation = GeneratedCodeInfo'Annotation{_GeneratedCodeInfo'Annotation'path
-                                                                 :: ![Data.Int.Int32],
-                                                                 _GeneratedCodeInfo'Annotation'sourceFile
-                                                                 :: !(Prelude.Maybe Data.Text.Text),
-                                                                 _GeneratedCodeInfo'Annotation'begin
-                                                                 :: !(Prelude.Maybe Data.Int.Int32),
-                                                                 _GeneratedCodeInfo'Annotation'end
-                                                                 :: !(Prelude.Maybe Data.Int.Int32),
-                                                                 _GeneratedCodeInfo'Annotation'_unknownFields
-                                                                 :: !Data.ProtoLens.FieldSet}
-                                      deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show GeneratedCodeInfo'Annotation where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation "path"
-           ([Data.Int.Int32])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'path
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'path = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation
-           "sourceFile"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _GeneratedCodeInfo'Annotation'sourceFile
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'sourceFile = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation
-           "maybe'sourceFile"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _GeneratedCodeInfo'Annotation'sourceFile
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'sourceFile = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation "begin"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'begin
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'begin = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation
-           "maybe'begin"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'begin
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'begin = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation "end"
-           (Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'end
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'end = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' GeneratedCodeInfo'Annotation
-           "maybe'end"
-           (Prelude.Maybe Data.Int.Int32)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _GeneratedCodeInfo'Annotation'end
-                 (\ x__ y__ -> x__{_GeneratedCodeInfo'Annotation'end = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message GeneratedCodeInfo'Annotation where
-        messageName _
-          = Data.Text.pack "google.protobuf.GeneratedCodeInfo.Annotation"
-        fieldsByTag
-          = let path__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "path"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "path")))
-                      :: Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation
-                sourceFile__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "source_file"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'sourceFile")))
-                      :: Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation
-                begin__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "begin"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'begin")))
-                      :: Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation
-                end__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "end"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'end")))
-                      :: Data.ProtoLens.FieldDescriptor GeneratedCodeInfo'Annotation
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, path__field_descriptor),
-                 (Data.ProtoLens.Tag 2, sourceFile__field_descriptor),
-                 (Data.ProtoLens.Tag 3, begin__field_descriptor),
-                 (Data.ProtoLens.Tag 4, end__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _GeneratedCodeInfo'Annotation'_unknownFields
-              (\ x__ y__ ->
-                 x__{_GeneratedCodeInfo'Annotation'_unknownFields = y__})
-        defMessage
-          = GeneratedCodeInfo'Annotation{_GeneratedCodeInfo'Annotation'path =
-                                           [],
-                                         _GeneratedCodeInfo'Annotation'sourceFile = Prelude.Nothing,
-                                         _GeneratedCodeInfo'Annotation'begin = Prelude.Nothing,
-                                         _GeneratedCodeInfo'Annotation'end = Prelude.Nothing,
-                                         _GeneratedCodeInfo'Annotation'_unknownFields = ([])}
-instance Control.DeepSeq.NFData GeneratedCodeInfo'Annotation where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_GeneratedCodeInfo'Annotation'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_GeneratedCodeInfo'Annotation'path x__)
-                   (Control.DeepSeq.deepseq
-                      (_GeneratedCodeInfo'Annotation'sourceFile x__)
-                      (Control.DeepSeq.deepseq (_GeneratedCodeInfo'Annotation'begin x__)
-                         (Control.DeepSeq.deepseq (_GeneratedCodeInfo'Annotation'end x__)
-                            (())))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.messageSetWireFormat' @:: Lens' MessageOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'messageSetWireFormat' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.noStandardDescriptorAccessor' @:: Lens' MessageOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'noStandardDescriptorAccessor' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' MessageOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.mapEntry' @:: Lens' MessageOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'mapEntry' @:: Lens' MessageOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' MessageOptions [UninterpretedOption]@
- -}
-data MessageOptions = MessageOptions{_MessageOptions'messageSetWireFormat
-                                     :: !(Prelude.Maybe Prelude.Bool),
-                                     _MessageOptions'noStandardDescriptorAccessor ::
-                                     !(Prelude.Maybe Prelude.Bool),
-                                     _MessageOptions'deprecated :: !(Prelude.Maybe Prelude.Bool),
-                                     _MessageOptions'mapEntry :: !(Prelude.Maybe Prelude.Bool),
-                                     _MessageOptions'uninterpretedOption :: ![UninterpretedOption],
-                                     _MessageOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                        deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show MessageOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' MessageOptions "messageSetWireFormat"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'messageSetWireFormat
-                 (\ x__ y__ -> x__{_MessageOptions'messageSetWireFormat = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MessageOptions
-           "maybe'messageSetWireFormat"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'messageSetWireFormat
-                 (\ x__ y__ -> x__{_MessageOptions'messageSetWireFormat = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MessageOptions
-           "noStandardDescriptorAccessor"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _MessageOptions'noStandardDescriptorAccessor
-                 (\ x__ y__ ->
-                    x__{_MessageOptions'noStandardDescriptorAccessor = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MessageOptions
-           "maybe'noStandardDescriptorAccessor"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _MessageOptions'noStandardDescriptorAccessor
-                 (\ x__ y__ ->
-                    x__{_MessageOptions'noStandardDescriptorAccessor = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MessageOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'deprecated
-                 (\ x__ y__ -> x__{_MessageOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MessageOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'deprecated
-                 (\ x__ y__ -> x__{_MessageOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MessageOptions "mapEntry"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'mapEntry
-                 (\ x__ y__ -> x__{_MessageOptions'mapEntry = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' MessageOptions "maybe'mapEntry"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'mapEntry
-                 (\ x__ y__ -> x__{_MessageOptions'mapEntry = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MessageOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MessageOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_MessageOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message MessageOptions where
-        messageName _ = Data.Text.pack "google.protobuf.MessageOptions"
-        fieldsByTag
-          = let messageSetWireFormat__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "message_set_wire_format"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'messageSetWireFormat")))
-                      :: Data.ProtoLens.FieldDescriptor MessageOptions
-                noStandardDescriptorAccessor__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "no_standard_descriptor_accessor"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'noStandardDescriptorAccessor")))
-                      :: Data.ProtoLens.FieldDescriptor MessageOptions
-                deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor MessageOptions
-                mapEntry__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "map_entry"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'mapEntry")))
-                      :: Data.ProtoLens.FieldDescriptor MessageOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor MessageOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, messageSetWireFormat__field_descriptor),
-                 (Data.ProtoLens.Tag 2,
-                  noStandardDescriptorAccessor__field_descriptor),
-                 (Data.ProtoLens.Tag 3, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 7, mapEntry__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _MessageOptions'_unknownFields
-              (\ x__ y__ -> x__{_MessageOptions'_unknownFields = y__})
-        defMessage
-          = MessageOptions{_MessageOptions'messageSetWireFormat =
-                             Prelude.Nothing,
-                           _MessageOptions'noStandardDescriptorAccessor = Prelude.Nothing,
-                           _MessageOptions'deprecated = Prelude.Nothing,
-                           _MessageOptions'mapEntry = Prelude.Nothing,
-                           _MessageOptions'uninterpretedOption = [],
-                           _MessageOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData MessageOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_MessageOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_MessageOptions'messageSetWireFormat x__)
-                   (Control.DeepSeq.deepseq
-                      (_MessageOptions'noStandardDescriptorAccessor x__)
-                      (Control.DeepSeq.deepseq (_MessageOptions'deprecated x__)
-                         (Control.DeepSeq.deepseq (_MessageOptions'mapEntry x__)
-                            (Control.DeepSeq.deepseq (_MessageOptions'uninterpretedOption x__)
-                               (()))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' MethodDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.inputType' @:: Lens' MethodDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'inputType' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.outputType' @:: Lens' MethodDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'outputType' @:: Lens' MethodDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' MethodDescriptorProto MethodOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' MethodDescriptorProto (Prelude.Maybe MethodOptions)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.clientStreaming' @:: Lens' MethodDescriptorProto Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'clientStreaming' @:: Lens' MethodDescriptorProto (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.serverStreaming' @:: Lens' MethodDescriptorProto Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'serverStreaming' @:: Lens' MethodDescriptorProto (Prelude.Maybe Prelude.Bool)@
- -}
-data MethodDescriptorProto = MethodDescriptorProto{_MethodDescriptorProto'name
-                                                   :: !(Prelude.Maybe Data.Text.Text),
-                                                   _MethodDescriptorProto'inputType ::
-                                                   !(Prelude.Maybe Data.Text.Text),
-                                                   _MethodDescriptorProto'outputType ::
-                                                   !(Prelude.Maybe Data.Text.Text),
-                                                   _MethodDescriptorProto'options ::
-                                                   !(Prelude.Maybe MethodOptions),
-                                                   _MethodDescriptorProto'clientStreaming ::
-                                                   !(Prelude.Maybe Prelude.Bool),
-                                                   _MethodDescriptorProto'serverStreaming ::
-                                                   !(Prelude.Maybe Prelude.Bool),
-                                                   _MethodDescriptorProto'_unknownFields ::
-                                                   !Data.ProtoLens.FieldSet}
-                               deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show MethodDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' MethodDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'name
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' MethodDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'name
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodDescriptorProto "inputType"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'inputType
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'inputType = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "maybe'inputType"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'inputType
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'inputType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodDescriptorProto "outputType"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'outputType
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'outputType = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "maybe'outputType"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'outputType
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'outputType = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodDescriptorProto "options"
-           (MethodOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'options
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' MethodDescriptorProto "maybe'options"
-           (Prelude.Maybe MethodOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'options
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'options = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "clientStreaming"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'clientStreaming
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'clientStreaming = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "maybe'clientStreaming"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'clientStreaming
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'clientStreaming = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "serverStreaming"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'serverStreaming
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'serverStreaming = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MethodDescriptorProto
-           "maybe'serverStreaming"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodDescriptorProto'serverStreaming
-                 (\ x__ y__ -> x__{_MethodDescriptorProto'serverStreaming = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message MethodDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.MethodDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-                inputType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "input_type"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'inputType")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-                outputType__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "output_type"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'outputType")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor MethodOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-                clientStreaming__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "client_streaming"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'clientStreaming")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-                serverStreaming__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "server_streaming"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'serverStreaming")))
-                      :: Data.ProtoLens.FieldDescriptor MethodDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, inputType__field_descriptor),
-                 (Data.ProtoLens.Tag 3, outputType__field_descriptor),
-                 (Data.ProtoLens.Tag 4, options__field_descriptor),
-                 (Data.ProtoLens.Tag 5, clientStreaming__field_descriptor),
-                 (Data.ProtoLens.Tag 6, serverStreaming__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _MethodDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_MethodDescriptorProto'_unknownFields = y__})
-        defMessage
-          = MethodDescriptorProto{_MethodDescriptorProto'name =
-                                    Prelude.Nothing,
-                                  _MethodDescriptorProto'inputType = Prelude.Nothing,
-                                  _MethodDescriptorProto'outputType = Prelude.Nothing,
-                                  _MethodDescriptorProto'options = Prelude.Nothing,
-                                  _MethodDescriptorProto'clientStreaming = Prelude.Nothing,
-                                  _MethodDescriptorProto'serverStreaming = Prelude.Nothing,
-                                  _MethodDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData MethodDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_MethodDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_MethodDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_MethodDescriptorProto'inputType x__)
-                      (Control.DeepSeq.deepseq (_MethodDescriptorProto'outputType x__)
-                         (Control.DeepSeq.deepseq (_MethodDescriptorProto'options x__)
-                            (Control.DeepSeq.deepseq
-                               (_MethodDescriptorProto'clientStreaming x__)
-                               (Control.DeepSeq.deepseq
-                                  (_MethodDescriptorProto'serverStreaming x__)
-                                  (())))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' MethodOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' MethodOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.idempotencyLevel' @:: Lens' MethodOptions MethodOptions'IdempotencyLevel@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'idempotencyLevel' @:: Lens' MethodOptions (Prelude.Maybe MethodOptions'IdempotencyLevel)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' MethodOptions [UninterpretedOption]@
- -}
-data MethodOptions = MethodOptions{_MethodOptions'deprecated ::
-                                   !(Prelude.Maybe Prelude.Bool),
-                                   _MethodOptions'idempotencyLevel ::
-                                   !(Prelude.Maybe MethodOptions'IdempotencyLevel),
-                                   _MethodOptions'uninterpretedOption :: ![UninterpretedOption],
-                                   _MethodOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                       deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show MethodOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' MethodOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodOptions'deprecated
-                 (\ x__ y__ -> x__{_MethodOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' MethodOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodOptions'deprecated
-                 (\ x__ y__ -> x__{_MethodOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodOptions "idempotencyLevel"
-           (MethodOptions'IdempotencyLevel)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodOptions'idempotencyLevel
-                 (\ x__ y__ -> x__{_MethodOptions'idempotencyLevel = y__}))
-              (Data.ProtoLens.maybeLens MethodOptions'IDEMPOTENCY_UNKNOWN)
-instance Lens.Labels.HasLens' MethodOptions
-           "maybe'idempotencyLevel"
-           (Prelude.Maybe MethodOptions'IdempotencyLevel)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodOptions'idempotencyLevel
-                 (\ x__ y__ -> x__{_MethodOptions'idempotencyLevel = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' MethodOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _MethodOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_MethodOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message MethodOptions where
-        messageName _ = Data.Text.pack "google.protobuf.MethodOptions"
-        fieldsByTag
-          = let deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor MethodOptions
-                idempotencyLevel__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "idempotency_level"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.EnumField ::
-                         Data.ProtoLens.FieldTypeDescriptor MethodOptions'IdempotencyLevel)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'idempotencyLevel")))
-                      :: Data.ProtoLens.FieldDescriptor MethodOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor MethodOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 34, idempotencyLevel__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _MethodOptions'_unknownFields
-              (\ x__ y__ -> x__{_MethodOptions'_unknownFields = y__})
-        defMessage
-          = MethodOptions{_MethodOptions'deprecated = Prelude.Nothing,
-                          _MethodOptions'idempotencyLevel = Prelude.Nothing,
-                          _MethodOptions'uninterpretedOption = [],
-                          _MethodOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData MethodOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_MethodOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_MethodOptions'deprecated x__)
-                   (Control.DeepSeq.deepseq (_MethodOptions'idempotencyLevel x__)
-                      (Control.DeepSeq.deepseq (_MethodOptions'uninterpretedOption x__)
-                         (()))))
-data MethodOptions'IdempotencyLevel = MethodOptions'IDEMPOTENCY_UNKNOWN
-                                    | MethodOptions'NO_SIDE_EFFECTS
-                                    | MethodOptions'IDEMPOTENT
-                                        deriving (Prelude.Show, Prelude.Eq, Prelude.Ord)
-instance Data.ProtoLens.FieldDefault MethodOptions'IdempotencyLevel
-         where
-        fieldDefault = MethodOptions'IDEMPOTENCY_UNKNOWN
-instance Data.ProtoLens.MessageEnum MethodOptions'IdempotencyLevel
-         where
-        maybeToEnum 0 = Prelude.Just MethodOptions'IDEMPOTENCY_UNKNOWN
-        maybeToEnum 1 = Prelude.Just MethodOptions'NO_SIDE_EFFECTS
-        maybeToEnum 2 = Prelude.Just MethodOptions'IDEMPOTENT
-        maybeToEnum _ = Prelude.Nothing
-        showEnum MethodOptions'IDEMPOTENCY_UNKNOWN = "IDEMPOTENCY_UNKNOWN"
-        showEnum MethodOptions'NO_SIDE_EFFECTS = "NO_SIDE_EFFECTS"
-        showEnum MethodOptions'IDEMPOTENT = "IDEMPOTENT"
-        readEnum "IDEMPOTENCY_UNKNOWN"
-          = Prelude.Just MethodOptions'IDEMPOTENCY_UNKNOWN
-        readEnum "NO_SIDE_EFFECTS"
-          = Prelude.Just MethodOptions'NO_SIDE_EFFECTS
-        readEnum "IDEMPOTENT" = Prelude.Just MethodOptions'IDEMPOTENT
-        readEnum _ = Prelude.Nothing
-instance Prelude.Enum MethodOptions'IdempotencyLevel where
-        toEnum k__
-          = Prelude.maybe
-              (Prelude.error
-                 ((Prelude.++) "toEnum: unknown value for enum IdempotencyLevel: "
-                    (Prelude.show k__)))
-              Prelude.id
-              (Data.ProtoLens.maybeToEnum k__)
-        fromEnum MethodOptions'IDEMPOTENCY_UNKNOWN = 0
-        fromEnum MethodOptions'NO_SIDE_EFFECTS = 1
-        fromEnum MethodOptions'IDEMPOTENT = 2
-        succ MethodOptions'IDEMPOTENT
-          = Prelude.error
-              "MethodOptions'IdempotencyLevel.succ: bad argument MethodOptions'IDEMPOTENT. This value would be out of bounds."
-        succ MethodOptions'IDEMPOTENCY_UNKNOWN
-          = MethodOptions'NO_SIDE_EFFECTS
-        succ MethodOptions'NO_SIDE_EFFECTS = MethodOptions'IDEMPOTENT
-        pred MethodOptions'IDEMPOTENCY_UNKNOWN
-          = Prelude.error
-              "MethodOptions'IdempotencyLevel.pred: bad argument MethodOptions'IDEMPOTENCY_UNKNOWN. This value would be out of bounds."
-        pred MethodOptions'NO_SIDE_EFFECTS
-          = MethodOptions'IDEMPOTENCY_UNKNOWN
-        pred MethodOptions'IDEMPOTENT = MethodOptions'NO_SIDE_EFFECTS
-        enumFrom = Data.ProtoLens.Message.Enum.messageEnumFrom
-        enumFromTo = Data.ProtoLens.Message.Enum.messageEnumFromTo
-        enumFromThen = Data.ProtoLens.Message.Enum.messageEnumFromThen
-        enumFromThenTo = Data.ProtoLens.Message.Enum.messageEnumFromThenTo
-instance Prelude.Bounded MethodOptions'IdempotencyLevel where
-        minBound = MethodOptions'IDEMPOTENCY_UNKNOWN
-        maxBound = MethodOptions'IDEMPOTENT
-instance Control.DeepSeq.NFData MethodOptions'IdempotencyLevel
-         where
-        rnf x__ = Prelude.seq x__ (())
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' OneofDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' OneofDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' OneofDescriptorProto OneofOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' OneofDescriptorProto (Prelude.Maybe OneofOptions)@
- -}
-data OneofDescriptorProto = OneofDescriptorProto{_OneofDescriptorProto'name
-                                                 :: !(Prelude.Maybe Data.Text.Text),
-                                                 _OneofDescriptorProto'options ::
-                                                 !(Prelude.Maybe OneofOptions),
-                                                 _OneofDescriptorProto'_unknownFields ::
-                                                 !Data.ProtoLens.FieldSet}
-                              deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show OneofDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' OneofDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _OneofDescriptorProto'name
-                 (\ x__ y__ -> x__{_OneofDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' OneofDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _OneofDescriptorProto'name
-                 (\ x__ y__ -> x__{_OneofDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' OneofDescriptorProto "options"
-           (OneofOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _OneofDescriptorProto'options
-                 (\ x__ y__ -> x__{_OneofDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' OneofDescriptorProto "maybe'options"
-           (Prelude.Maybe OneofOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _OneofDescriptorProto'options
-                 (\ x__ y__ -> x__{_OneofDescriptorProto'options = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message OneofDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.OneofDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor OneofDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor OneofOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor OneofDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, options__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _OneofDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_OneofDescriptorProto'_unknownFields = y__})
-        defMessage
-          = OneofDescriptorProto{_OneofDescriptorProto'name =
-                                   Prelude.Nothing,
-                                 _OneofDescriptorProto'options = Prelude.Nothing,
-                                 _OneofDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData OneofDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_OneofDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_OneofDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_OneofDescriptorProto'options x__) (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' OneofOptions [UninterpretedOption]@
- -}
-data OneofOptions = OneofOptions{_OneofOptions'uninterpretedOption
-                                 :: ![UninterpretedOption],
-                                 _OneofOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                      deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show OneofOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' OneofOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _OneofOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_OneofOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message OneofOptions where
-        messageName _ = Data.Text.pack "google.protobuf.OneofOptions"
-        fieldsByTag
-          = let uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor OneofOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _OneofOptions'_unknownFields
-              (\ x__ y__ -> x__{_OneofOptions'_unknownFields = y__})
-        defMessage
-          = OneofOptions{_OneofOptions'uninterpretedOption = [],
-                         _OneofOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData OneofOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_OneofOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_OneofOptions'uninterpretedOption x__)
-                   (()))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' ServiceDescriptorProto Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'name' @:: Lens' ServiceDescriptorProto (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.method' @:: Lens' ServiceDescriptorProto [MethodDescriptorProto]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.options' @:: Lens' ServiceDescriptorProto ServiceOptions@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'options' @:: Lens' ServiceDescriptorProto (Prelude.Maybe ServiceOptions)@
- -}
-data ServiceDescriptorProto = ServiceDescriptorProto{_ServiceDescriptorProto'name
-                                                     :: !(Prelude.Maybe Data.Text.Text),
-                                                     _ServiceDescriptorProto'method ::
-                                                     ![MethodDescriptorProto],
-                                                     _ServiceDescriptorProto'options ::
-                                                     !(Prelude.Maybe ServiceOptions),
-                                                     _ServiceDescriptorProto'_unknownFields ::
-                                                     !Data.ProtoLens.FieldSet}
-                                deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show ServiceDescriptorProto where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' ServiceDescriptorProto "name"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceDescriptorProto'name
-                 (\ x__ y__ -> x__{_ServiceDescriptorProto'name = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' ServiceDescriptorProto "maybe'name"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceDescriptorProto'name
-                 (\ x__ y__ -> x__{_ServiceDescriptorProto'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' ServiceDescriptorProto "method"
-           ([MethodDescriptorProto])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceDescriptorProto'method
-                 (\ x__ y__ -> x__{_ServiceDescriptorProto'method = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' ServiceDescriptorProto "options"
-           (ServiceOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceDescriptorProto'options
-                 (\ x__ y__ -> x__{_ServiceDescriptorProto'options = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.defMessage)
-instance Lens.Labels.HasLens' ServiceDescriptorProto
-           "maybe'options"
-           (Prelude.Maybe ServiceOptions)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceDescriptorProto'options
-                 (\ x__ y__ -> x__{_ServiceDescriptorProto'options = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message ServiceDescriptorProto where
-        messageName _
-          = Data.Text.pack "google.protobuf.ServiceDescriptorProto"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")))
-                      :: Data.ProtoLens.FieldDescriptor ServiceDescriptorProto
-                method__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "method"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor MethodDescriptorProto)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "method")))
-                      :: Data.ProtoLens.FieldDescriptor ServiceDescriptorProto
-                options__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "options"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor ServiceOptions)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")))
-                      :: Data.ProtoLens.FieldDescriptor ServiceDescriptorProto
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, name__field_descriptor),
-                 (Data.ProtoLens.Tag 2, method__field_descriptor),
-                 (Data.ProtoLens.Tag 3, options__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _ServiceDescriptorProto'_unknownFields
-              (\ x__ y__ -> x__{_ServiceDescriptorProto'_unknownFields = y__})
-        defMessage
-          = ServiceDescriptorProto{_ServiceDescriptorProto'name =
-                                     Prelude.Nothing,
-                                   _ServiceDescriptorProto'method = [],
-                                   _ServiceDescriptorProto'options = Prelude.Nothing,
-                                   _ServiceDescriptorProto'_unknownFields = ([])}
-instance Control.DeepSeq.NFData ServiceDescriptorProto where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_ServiceDescriptorProto'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_ServiceDescriptorProto'name x__)
-                   (Control.DeepSeq.deepseq (_ServiceDescriptorProto'method x__)
-                      (Control.DeepSeq.deepseq (_ServiceDescriptorProto'options x__)
-                         (()))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.deprecated' @:: Lens' ServiceOptions Prelude.Bool@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'deprecated' @:: Lens' ServiceOptions (Prelude.Maybe Prelude.Bool)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.uninterpretedOption' @:: Lens' ServiceOptions [UninterpretedOption]@
- -}
-data ServiceOptions = ServiceOptions{_ServiceOptions'deprecated ::
-                                     !(Prelude.Maybe Prelude.Bool),
-                                     _ServiceOptions'uninterpretedOption :: ![UninterpretedOption],
-                                     _ServiceOptions'_unknownFields :: !Data.ProtoLens.FieldSet}
-                        deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show ServiceOptions where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' ServiceOptions "deprecated"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceOptions'deprecated
-                 (\ x__ y__ -> x__{_ServiceOptions'deprecated = y__}))
-              (Data.ProtoLens.maybeLens Prelude.False)
-instance Lens.Labels.HasLens' ServiceOptions "maybe'deprecated"
-           (Prelude.Maybe Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceOptions'deprecated
-                 (\ x__ y__ -> x__{_ServiceOptions'deprecated = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' ServiceOptions "uninterpretedOption"
-           ([UninterpretedOption])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _ServiceOptions'uninterpretedOption
-                 (\ x__ y__ -> x__{_ServiceOptions'uninterpretedOption = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message ServiceOptions where
-        messageName _ = Data.Text.pack "google.protobuf.ServiceOptions"
-        fieldsByTag
-          = let deprecated__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "deprecated"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")))
-                      :: Data.ProtoLens.FieldDescriptor ServiceOptions
-                uninterpretedOption__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "uninterpreted_option"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "uninterpretedOption")))
-                      :: Data.ProtoLens.FieldDescriptor ServiceOptions
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 33, deprecated__field_descriptor),
-                 (Data.ProtoLens.Tag 999, uninterpretedOption__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _ServiceOptions'_unknownFields
-              (\ x__ y__ -> x__{_ServiceOptions'_unknownFields = y__})
-        defMessage
-          = ServiceOptions{_ServiceOptions'deprecated = Prelude.Nothing,
-                           _ServiceOptions'uninterpretedOption = [],
-                           _ServiceOptions'_unknownFields = ([])}
-instance Control.DeepSeq.NFData ServiceOptions where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_ServiceOptions'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_ServiceOptions'deprecated x__)
-                   (Control.DeepSeq.deepseq (_ServiceOptions'uninterpretedOption x__)
-                      (())))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.location' @:: Lens' SourceCodeInfo [SourceCodeInfo'Location]@
- -}
-data SourceCodeInfo = SourceCodeInfo{_SourceCodeInfo'location ::
-                                     ![SourceCodeInfo'Location],
-                                     _SourceCodeInfo'_unknownFields :: !Data.ProtoLens.FieldSet}
-                        deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show SourceCodeInfo where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' SourceCodeInfo "location"
-           ([SourceCodeInfo'Location])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _SourceCodeInfo'location
-                 (\ x__ y__ -> x__{_SourceCodeInfo'location = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message SourceCodeInfo where
-        messageName _ = Data.Text.pack "google.protobuf.SourceCodeInfo"
-        fieldsByTag
-          = let location__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "location"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor SourceCodeInfo'Location)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "location")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, location__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _SourceCodeInfo'_unknownFields
-              (\ x__ y__ -> x__{_SourceCodeInfo'_unknownFields = y__})
-        defMessage
-          = SourceCodeInfo{_SourceCodeInfo'location = [],
-                           _SourceCodeInfo'_unknownFields = ([])}
-instance Control.DeepSeq.NFData SourceCodeInfo where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_SourceCodeInfo'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_SourceCodeInfo'location x__) (()))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.path' @:: Lens' SourceCodeInfo'Location [Data.Int.Int32]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.span' @:: Lens' SourceCodeInfo'Location [Data.Int.Int32]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.leadingComments' @:: Lens' SourceCodeInfo'Location Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'leadingComments' @:: Lens' SourceCodeInfo'Location (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.trailingComments' @:: Lens' SourceCodeInfo'Location Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'trailingComments' @:: Lens' SourceCodeInfo'Location (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.leadingDetachedComments' @:: Lens' SourceCodeInfo'Location [Data.Text.Text]@
- -}
-data SourceCodeInfo'Location = SourceCodeInfo'Location{_SourceCodeInfo'Location'path
-                                                       :: ![Data.Int.Int32],
-                                                       _SourceCodeInfo'Location'span ::
-                                                       ![Data.Int.Int32],
-                                                       _SourceCodeInfo'Location'leadingComments ::
-                                                       !(Prelude.Maybe Data.Text.Text),
-                                                       _SourceCodeInfo'Location'trailingComments ::
-                                                       !(Prelude.Maybe Data.Text.Text),
-                                                       _SourceCodeInfo'Location'leadingDetachedComments
-                                                       :: ![Data.Text.Text],
-                                                       _SourceCodeInfo'Location'_unknownFields ::
-                                                       !Data.ProtoLens.FieldSet}
-                                 deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show SourceCodeInfo'Location where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' SourceCodeInfo'Location "path"
-           ([Data.Int.Int32])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _SourceCodeInfo'Location'path
-                 (\ x__ y__ -> x__{_SourceCodeInfo'Location'path = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' SourceCodeInfo'Location "span"
-           ([Data.Int.Int32])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _SourceCodeInfo'Location'span
-                 (\ x__ y__ -> x__{_SourceCodeInfo'Location'span = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' SourceCodeInfo'Location
-           "leadingComments"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _SourceCodeInfo'Location'leadingComments
-                 (\ x__ y__ -> x__{_SourceCodeInfo'Location'leadingComments = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' SourceCodeInfo'Location
-           "maybe'leadingComments"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _SourceCodeInfo'Location'leadingComments
-                 (\ x__ y__ -> x__{_SourceCodeInfo'Location'leadingComments = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' SourceCodeInfo'Location
-           "trailingComments"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _SourceCodeInfo'Location'trailingComments
-                 (\ x__ y__ ->
-                    x__{_SourceCodeInfo'Location'trailingComments = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' SourceCodeInfo'Location
-           "maybe'trailingComments"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _SourceCodeInfo'Location'trailingComments
-                 (\ x__ y__ ->
-                    x__{_SourceCodeInfo'Location'trailingComments = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' SourceCodeInfo'Location
-           "leadingDetachedComments"
-           ([Data.Text.Text])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _SourceCodeInfo'Location'leadingDetachedComments
-                 (\ x__ y__ ->
-                    x__{_SourceCodeInfo'Location'leadingDetachedComments = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message SourceCodeInfo'Location where
-        messageName _
-          = Data.Text.pack "google.protobuf.SourceCodeInfo.Location"
-        fieldsByTag
-          = let path__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "path"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "path")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location
-                span__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "span"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int32Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int32)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Packed
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "span")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location
-                leadingComments__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "leading_comments"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'leadingComments")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location
-                trailingComments__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "trailing_comments"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'trailingComments")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location
-                leadingDetachedComments__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "leading_detached_comments"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "leadingDetachedComments")))
-                      :: Data.ProtoLens.FieldDescriptor SourceCodeInfo'Location
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, path__field_descriptor),
-                 (Data.ProtoLens.Tag 2, span__field_descriptor),
-                 (Data.ProtoLens.Tag 3, leadingComments__field_descriptor),
-                 (Data.ProtoLens.Tag 4, trailingComments__field_descriptor),
-                 (Data.ProtoLens.Tag 6, leadingDetachedComments__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _SourceCodeInfo'Location'_unknownFields
-              (\ x__ y__ -> x__{_SourceCodeInfo'Location'_unknownFields = y__})
-        defMessage
-          = SourceCodeInfo'Location{_SourceCodeInfo'Location'path = [],
-                                    _SourceCodeInfo'Location'span = [],
-                                    _SourceCodeInfo'Location'leadingComments = Prelude.Nothing,
-                                    _SourceCodeInfo'Location'trailingComments = Prelude.Nothing,
-                                    _SourceCodeInfo'Location'leadingDetachedComments = [],
-                                    _SourceCodeInfo'Location'_unknownFields = ([])}
-instance Control.DeepSeq.NFData SourceCodeInfo'Location where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_SourceCodeInfo'Location'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_SourceCodeInfo'Location'path x__)
-                   (Control.DeepSeq.deepseq (_SourceCodeInfo'Location'span x__)
-                      (Control.DeepSeq.deepseq
-                         (_SourceCodeInfo'Location'leadingComments x__)
-                         (Control.DeepSeq.deepseq
-                            (_SourceCodeInfo'Location'trailingComments x__)
-                            (Control.DeepSeq.deepseq
-                               (_SourceCodeInfo'Location'leadingDetachedComments x__)
-                               (()))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.name' @:: Lens' UninterpretedOption [UninterpretedOption'NamePart]@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.identifierValue' @:: Lens' UninterpretedOption Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'identifierValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Text.Text)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.positiveIntValue' @:: Lens' UninterpretedOption Data.Word.Word64@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'positiveIntValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Word.Word64)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.negativeIntValue' @:: Lens' UninterpretedOption Data.Int.Int64@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'negativeIntValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Int.Int64)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.doubleValue' @:: Lens' UninterpretedOption Prelude.Double@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'doubleValue' @:: Lens' UninterpretedOption (Prelude.Maybe Prelude.Double)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.stringValue' @:: Lens' UninterpretedOption Data.ByteString.ByteString@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'stringValue' @:: Lens' UninterpretedOption
-  (Prelude.Maybe Data.ByteString.ByteString)@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.aggregateValue' @:: Lens' UninterpretedOption Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.maybe'aggregateValue' @:: Lens' UninterpretedOption (Prelude.Maybe Data.Text.Text)@
- -}
-data UninterpretedOption = UninterpretedOption{_UninterpretedOption'name
-                                               :: ![UninterpretedOption'NamePart],
-                                               _UninterpretedOption'identifierValue ::
-                                               !(Prelude.Maybe Data.Text.Text),
-                                               _UninterpretedOption'positiveIntValue ::
-                                               !(Prelude.Maybe Data.Word.Word64),
-                                               _UninterpretedOption'negativeIntValue ::
-                                               !(Prelude.Maybe Data.Int.Int64),
-                                               _UninterpretedOption'doubleValue ::
-                                               !(Prelude.Maybe Prelude.Double),
-                                               _UninterpretedOption'stringValue ::
-                                               !(Prelude.Maybe Data.ByteString.ByteString),
-                                               _UninterpretedOption'aggregateValue ::
-                                               !(Prelude.Maybe Data.Text.Text),
-                                               _UninterpretedOption'_unknownFields ::
-                                               !Data.ProtoLens.FieldSet}
-                             deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show UninterpretedOption where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' UninterpretedOption "name"
-           ([UninterpretedOption'NamePart])
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'name
-                 (\ x__ y__ -> x__{_UninterpretedOption'name = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption "identifierValue"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'identifierValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'identifierValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'identifierValue"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'identifierValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'identifierValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption
-           "positiveIntValue"
-           (Data.Word.Word64)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'positiveIntValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'positiveIntValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'positiveIntValue"
-           (Prelude.Maybe Data.Word.Word64)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'positiveIntValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'positiveIntValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption
-           "negativeIntValue"
-           (Data.Int.Int64)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'negativeIntValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'negativeIntValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'negativeIntValue"
-           (Prelude.Maybe Data.Int.Int64)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'negativeIntValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'negativeIntValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption "doubleValue"
-           (Prelude.Double)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'doubleValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'doubleValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'doubleValue"
-           (Prelude.Maybe Prelude.Double)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'doubleValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'doubleValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption "stringValue"
-           (Data.ByteString.ByteString)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'stringValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'stringValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'stringValue"
-           (Prelude.Maybe Data.ByteString.ByteString)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'stringValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'stringValue = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption "aggregateValue"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'aggregateValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'aggregateValue = y__}))
-              (Data.ProtoLens.maybeLens Data.ProtoLens.fieldDefault)
-instance Lens.Labels.HasLens' UninterpretedOption
-           "maybe'aggregateValue"
-           (Prelude.Maybe Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'aggregateValue
-                 (\ x__ y__ -> x__{_UninterpretedOption'aggregateValue = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message UninterpretedOption where
-        messageName _
-          = Data.Text.pack "google.protobuf.UninterpretedOption"
-        fieldsByTag
-          = let name__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name"
-                      (Data.ProtoLens.MessageField Data.ProtoLens.MessageType ::
-                         Data.ProtoLens.FieldTypeDescriptor UninterpretedOption'NamePart)
-                      (Data.ProtoLens.RepeatedField Data.ProtoLens.Unpacked
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                identifierValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "identifier_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'identifierValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                positiveIntValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "positive_int_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.UInt64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Word.Word64)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'positiveIntValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                negativeIntValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "negative_int_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.Int64Field ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Int.Int64)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'negativeIntValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                doubleValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "double_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.DoubleField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Double)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'doubleValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                stringValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "string_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BytesField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.ByteString.ByteString)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'stringValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-                aggregateValue__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "aggregate_value"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.OptionalField
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) ::
-                               (Lens.Labels.Proxy#) "maybe'aggregateValue")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 2, name__field_descriptor),
-                 (Data.ProtoLens.Tag 3, identifierValue__field_descriptor),
-                 (Data.ProtoLens.Tag 4, positiveIntValue__field_descriptor),
-                 (Data.ProtoLens.Tag 5, negativeIntValue__field_descriptor),
-                 (Data.ProtoLens.Tag 6, doubleValue__field_descriptor),
-                 (Data.ProtoLens.Tag 7, stringValue__field_descriptor),
-                 (Data.ProtoLens.Tag 8, aggregateValue__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens _UninterpretedOption'_unknownFields
-              (\ x__ y__ -> x__{_UninterpretedOption'_unknownFields = y__})
-        defMessage
-          = UninterpretedOption{_UninterpretedOption'name = [],
-                                _UninterpretedOption'identifierValue = Prelude.Nothing,
-                                _UninterpretedOption'positiveIntValue = Prelude.Nothing,
-                                _UninterpretedOption'negativeIntValue = Prelude.Nothing,
-                                _UninterpretedOption'doubleValue = Prelude.Nothing,
-                                _UninterpretedOption'stringValue = Prelude.Nothing,
-                                _UninterpretedOption'aggregateValue = Prelude.Nothing,
-                                _UninterpretedOption'_unknownFields = ([])}
-instance Control.DeepSeq.NFData UninterpretedOption where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq (_UninterpretedOption'_unknownFields x__)
-                (Control.DeepSeq.deepseq (_UninterpretedOption'name x__)
-                   (Control.DeepSeq.deepseq (_UninterpretedOption'identifierValue x__)
-                      (Control.DeepSeq.deepseq
-                         (_UninterpretedOption'positiveIntValue x__)
-                         (Control.DeepSeq.deepseq
-                            (_UninterpretedOption'negativeIntValue x__)
-                            (Control.DeepSeq.deepseq (_UninterpretedOption'doubleValue x__)
-                               (Control.DeepSeq.deepseq (_UninterpretedOption'stringValue x__)
-                                  (Control.DeepSeq.deepseq (_UninterpretedOption'aggregateValue x__)
-                                     (()))))))))
-{- | Fields :
-
-    * 'Proto.Google.Protobuf.Descriptor_Fields.namePart' @:: Lens' UninterpretedOption'NamePart Data.Text.Text@
-    * 'Proto.Google.Protobuf.Descriptor_Fields.isExtension' @:: Lens' UninterpretedOption'NamePart Prelude.Bool@
- -}
-data UninterpretedOption'NamePart = UninterpretedOption'NamePart{_UninterpretedOption'NamePart'namePart
-                                                                 :: !Data.Text.Text,
-                                                                 _UninterpretedOption'NamePart'isExtension
-                                                                 :: !Prelude.Bool,
-                                                                 _UninterpretedOption'NamePart'_unknownFields
-                                                                 :: !Data.ProtoLens.FieldSet}
-                                      deriving (Prelude.Eq, Prelude.Ord)
-instance Prelude.Show UninterpretedOption'NamePart where
-        showsPrec _ __x __s
-          = Prelude.showChar '{'
-              (Prelude.showString (Data.ProtoLens.showMessageShort __x)
-                 (Prelude.showChar '}' __s))
-instance Lens.Labels.HasLens' UninterpretedOption'NamePart
-           "namePart"
-           (Data.Text.Text)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens _UninterpretedOption'NamePart'namePart
-                 (\ x__ y__ -> x__{_UninterpretedOption'NamePart'namePart = y__}))
-              Prelude.id
-instance Lens.Labels.HasLens' UninterpretedOption'NamePart
-           "isExtension"
-           (Prelude.Bool)
-         where
-        lensOf' _
-          = (Prelude..)
-              (Lens.Family2.Unchecked.lens
-                 _UninterpretedOption'NamePart'isExtension
-                 (\ x__ y__ ->
-                    x__{_UninterpretedOption'NamePart'isExtension = y__}))
-              Prelude.id
-instance Data.ProtoLens.Message UninterpretedOption'NamePart where
-        messageName _
-          = Data.Text.pack "google.protobuf.UninterpretedOption.NamePart"
-        fieldsByTag
-          = let namePart__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "name_part"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.StringField ::
-                         Data.ProtoLens.FieldTypeDescriptor Data.Text.Text)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Required
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "namePart")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption'NamePart
-                isExtension__field_descriptor
-                  = Data.ProtoLens.FieldDescriptor "is_extension"
-                      (Data.ProtoLens.ScalarField Data.ProtoLens.BoolField ::
-                         Data.ProtoLens.FieldTypeDescriptor Prelude.Bool)
-                      (Data.ProtoLens.PlainField Data.ProtoLens.Required
-                         (Lens.Labels.lensOf'
-                            ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isExtension")))
-                      :: Data.ProtoLens.FieldDescriptor UninterpretedOption'NamePart
-              in
-              Data.Map.fromList
-                [(Data.ProtoLens.Tag 1, namePart__field_descriptor),
-                 (Data.ProtoLens.Tag 2, isExtension__field_descriptor)]
-        unknownFields
-          = Lens.Family2.Unchecked.lens
-              _UninterpretedOption'NamePart'_unknownFields
-              (\ x__ y__ ->
-                 x__{_UninterpretedOption'NamePart'_unknownFields = y__})
-        defMessage
-          = UninterpretedOption'NamePart{_UninterpretedOption'NamePart'namePart
-                                           = Data.ProtoLens.fieldDefault,
-                                         _UninterpretedOption'NamePart'isExtension =
-                                           Data.ProtoLens.fieldDefault,
-                                         _UninterpretedOption'NamePart'_unknownFields = ([])}
-instance Control.DeepSeq.NFData UninterpretedOption'NamePart where
-        rnf
-          = \ x__ ->
-              Control.DeepSeq.deepseq
-                (_UninterpretedOption'NamePart'_unknownFields x__)
-                (Control.DeepSeq.deepseq
-                   (_UninterpretedOption'NamePart'namePart x__)
-                   (Control.DeepSeq.deepseq
-                      (_UninterpretedOption'NamePart'isExtension x__)
-                      (())))
diff --git a/src/Proto/Google/Protobuf/Descriptor_Fields.hs b/src/Proto/Google/Protobuf/Descriptor_Fields.hs
deleted file mode 100644
--- a/src/Proto/Google/Protobuf/Descriptor_Fields.hs
+++ /dev/null
@@ -1,1097 +0,0 @@
-{- This file was auto-generated from google/protobuf/descriptor.proto by the proto-lens-protoc program. -}
-{-# LANGUAGE ScopedTypeVariables, DataKinds, TypeFamilies,
-  UndecidableInstances, GeneralizedNewtypeDeriving,
-  MultiParamTypeClasses, FlexibleContexts, FlexibleInstances,
-  PatternSynonyms, MagicHash, NoImplicitPrelude, DataKinds #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports#-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports#-}
-module Proto.Google.Protobuf.Descriptor_Fields where
-import qualified Prelude
-import qualified Data.Int
-import qualified Data.Word
-import qualified Data.ProtoLens
-import qualified Data.ProtoLens.Message.Enum
-import qualified Data.ProtoLens.Service.Types
-import qualified Lens.Family2
-import qualified Lens.Family2.Unchecked
-import qualified Data.Text
-import qualified Data.Map
-import qualified Data.ByteString
-import qualified Data.ByteString.Char8
-import qualified Lens.Labels
-import qualified Text.Read
-
-aggregateValue ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "aggregateValue" a) =>
-                 Lens.Family2.LensLike' f s a
-aggregateValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "aggregateValue")
-allowAlias ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "allowAlias" a) =>
-             Lens.Family2.LensLike' f s a
-allowAlias
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "allowAlias")
-annotation ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "annotation" a) =>
-             Lens.Family2.LensLike' f s a
-annotation
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "annotation")
-begin ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "begin" a) =>
-        Lens.Family2.LensLike' f s a
-begin
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "begin")
-ccEnableArenas ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "ccEnableArenas" a) =>
-                 Lens.Family2.LensLike' f s a
-ccEnableArenas
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ccEnableArenas")
-ccGenericServices ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "ccGenericServices" a) =>
-                    Lens.Family2.LensLike' f s a
-ccGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ccGenericServices")
-clientStreaming ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "clientStreaming" a) =>
-                  Lens.Family2.LensLike' f s a
-clientStreaming
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "clientStreaming")
-csharpNamespace ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "csharpNamespace" a) =>
-                  Lens.Family2.LensLike' f s a
-csharpNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "csharpNamespace")
-ctype ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "ctype" a) =>
-        Lens.Family2.LensLike' f s a
-ctype
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "ctype")
-defaultValue ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "defaultValue" a) =>
-               Lens.Family2.LensLike' f s a
-defaultValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "defaultValue")
-dependency ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "dependency" a) =>
-             Lens.Family2.LensLike' f s a
-dependency
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "dependency")
-deprecated ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "deprecated" a) =>
-             Lens.Family2.LensLike' f s a
-deprecated
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "deprecated")
-doubleValue ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "doubleValue" a) =>
-              Lens.Family2.LensLike' f s a
-doubleValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "doubleValue")
-end ::
-    forall f s a .
-      (Prelude.Functor f, Lens.Labels.HasLens' s "end" a) =>
-      Lens.Family2.LensLike' f s a
-end
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "end")
-enumType ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "enumType" a) =>
-           Lens.Family2.LensLike' f s a
-enumType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "enumType")
-extendee ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "extendee" a) =>
-           Lens.Family2.LensLike' f s a
-extendee
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extendee")
-extension ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "extension" a) =>
-            Lens.Family2.LensLike' f s a
-extension
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extension")
-extensionRange ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "extensionRange" a) =>
-                 Lens.Family2.LensLike' f s a
-extensionRange
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "extensionRange")
-field ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "field" a) =>
-        Lens.Family2.LensLike' f s a
-field
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "field")
-file ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "file" a) =>
-       Lens.Family2.LensLike' f s a
-file
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "file")
-goPackage ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "goPackage" a) =>
-            Lens.Family2.LensLike' f s a
-goPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "goPackage")
-idempotencyLevel ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "idempotencyLevel" a) =>
-                   Lens.Family2.LensLike' f s a
-idempotencyLevel
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "idempotencyLevel")
-identifierValue ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "identifierValue" a) =>
-                  Lens.Family2.LensLike' f s a
-identifierValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "identifierValue")
-inputType ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "inputType" a) =>
-            Lens.Family2.LensLike' f s a
-inputType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "inputType")
-isExtension ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "isExtension" a) =>
-              Lens.Family2.LensLike' f s a
-isExtension
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "isExtension")
-javaGenerateEqualsAndHash ::
-                          forall f s a .
-                            (Prelude.Functor f,
-                             Lens.Labels.HasLens' s "javaGenerateEqualsAndHash" a) =>
-                            Lens.Family2.LensLike' f s a
-javaGenerateEqualsAndHash
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "javaGenerateEqualsAndHash")
-javaGenericServices ::
-                    forall f s a .
-                      (Prelude.Functor f,
-                       Lens.Labels.HasLens' s "javaGenericServices" a) =>
-                      Lens.Family2.LensLike' f s a
-javaGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "javaGenericServices")
-javaMultipleFiles ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "javaMultipleFiles" a) =>
-                    Lens.Family2.LensLike' f s a
-javaMultipleFiles
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "javaMultipleFiles")
-javaOuterClassname ::
-                   forall f s a .
-                     (Prelude.Functor f,
-                      Lens.Labels.HasLens' s "javaOuterClassname" a) =>
-                     Lens.Family2.LensLike' f s a
-javaOuterClassname
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "javaOuterClassname")
-javaPackage ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "javaPackage" a) =>
-              Lens.Family2.LensLike' f s a
-javaPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "javaPackage")
-javaStringCheckUtf8 ::
-                    forall f s a .
-                      (Prelude.Functor f,
-                       Lens.Labels.HasLens' s "javaStringCheckUtf8" a) =>
-                      Lens.Family2.LensLike' f s a
-javaStringCheckUtf8
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "javaStringCheckUtf8")
-jsonName ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "jsonName" a) =>
-           Lens.Family2.LensLike' f s a
-jsonName
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "jsonName")
-jstype ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "jstype" a) =>
-         Lens.Family2.LensLike' f s a
-jstype
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "jstype")
-label ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "label" a) =>
-        Lens.Family2.LensLike' f s a
-label
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "label")
-lazy ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "lazy" a) =>
-       Lens.Family2.LensLike' f s a
-lazy
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "lazy")
-leadingComments ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "leadingComments" a) =>
-                  Lens.Family2.LensLike' f s a
-leadingComments
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "leadingComments")
-leadingDetachedComments ::
-                        forall f s a .
-                          (Prelude.Functor f,
-                           Lens.Labels.HasLens' s "leadingDetachedComments" a) =>
-                          Lens.Family2.LensLike' f s a
-leadingDetachedComments
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "leadingDetachedComments")
-location ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "location" a) =>
-           Lens.Family2.LensLike' f s a
-location
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "location")
-mapEntry ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "mapEntry" a) =>
-           Lens.Family2.LensLike' f s a
-mapEntry
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "mapEntry")
-maybe'aggregateValue ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "maybe'aggregateValue" a) =>
-                       Lens.Family2.LensLike' f s a
-maybe'aggregateValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'aggregateValue")
-maybe'allowAlias ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'allowAlias" a) =>
-                   Lens.Family2.LensLike' f s a
-maybe'allowAlias
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'allowAlias")
-maybe'begin ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'begin" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'begin
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'begin")
-maybe'ccEnableArenas ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "maybe'ccEnableArenas" a) =>
-                       Lens.Family2.LensLike' f s a
-maybe'ccEnableArenas
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'ccEnableArenas")
-maybe'ccGenericServices ::
-                        forall f s a .
-                          (Prelude.Functor f,
-                           Lens.Labels.HasLens' s "maybe'ccGenericServices" a) =>
-                          Lens.Family2.LensLike' f s a
-maybe'ccGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'ccGenericServices")
-maybe'clientStreaming ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'clientStreaming" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'clientStreaming
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'clientStreaming")
-maybe'csharpNamespace ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'csharpNamespace" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'csharpNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'csharpNamespace")
-maybe'ctype ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'ctype" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'ctype
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'ctype")
-maybe'defaultValue ::
-                   forall f s a .
-                     (Prelude.Functor f,
-                      Lens.Labels.HasLens' s "maybe'defaultValue" a) =>
-                     Lens.Family2.LensLike' f s a
-maybe'defaultValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'defaultValue")
-maybe'deprecated ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'deprecated" a) =>
-                   Lens.Family2.LensLike' f s a
-maybe'deprecated
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'deprecated")
-maybe'doubleValue ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'doubleValue" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'doubleValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'doubleValue")
-maybe'end ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'end" a) =>
-            Lens.Family2.LensLike' f s a
-maybe'end
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'end")
-maybe'extendee ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'extendee" a) =>
-                 Lens.Family2.LensLike' f s a
-maybe'extendee
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'extendee")
-maybe'goPackage ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'goPackage" a) =>
-                  Lens.Family2.LensLike' f s a
-maybe'goPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'goPackage")
-maybe'idempotencyLevel ::
-                       forall f s a .
-                         (Prelude.Functor f,
-                          Lens.Labels.HasLens' s "maybe'idempotencyLevel" a) =>
-                         Lens.Family2.LensLike' f s a
-maybe'idempotencyLevel
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'idempotencyLevel")
-maybe'identifierValue ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'identifierValue" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'identifierValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'identifierValue")
-maybe'inputType ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'inputType" a) =>
-                  Lens.Family2.LensLike' f s a
-maybe'inputType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'inputType")
-maybe'javaGenerateEqualsAndHash ::
-                                forall f s a .
-                                  (Prelude.Functor f,
-                                   Lens.Labels.HasLens' s "maybe'javaGenerateEqualsAndHash" a) =>
-                                  Lens.Family2.LensLike' f s a
-maybe'javaGenerateEqualsAndHash
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'javaGenerateEqualsAndHash")
-maybe'javaGenericServices ::
-                          forall f s a .
-                            (Prelude.Functor f,
-                             Lens.Labels.HasLens' s "maybe'javaGenericServices" a) =>
-                            Lens.Family2.LensLike' f s a
-maybe'javaGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'javaGenericServices")
-maybe'javaMultipleFiles ::
-                        forall f s a .
-                          (Prelude.Functor f,
-                           Lens.Labels.HasLens' s "maybe'javaMultipleFiles" a) =>
-                          Lens.Family2.LensLike' f s a
-maybe'javaMultipleFiles
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'javaMultipleFiles")
-maybe'javaOuterClassname ::
-                         forall f s a .
-                           (Prelude.Functor f,
-                            Lens.Labels.HasLens' s "maybe'javaOuterClassname" a) =>
-                           Lens.Family2.LensLike' f s a
-maybe'javaOuterClassname
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'javaOuterClassname")
-maybe'javaPackage ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'javaPackage" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'javaPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'javaPackage")
-maybe'javaStringCheckUtf8 ::
-                          forall f s a .
-                            (Prelude.Functor f,
-                             Lens.Labels.HasLens' s "maybe'javaStringCheckUtf8" a) =>
-                            Lens.Family2.LensLike' f s a
-maybe'javaStringCheckUtf8
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'javaStringCheckUtf8")
-maybe'jsonName ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'jsonName" a) =>
-                 Lens.Family2.LensLike' f s a
-maybe'jsonName
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'jsonName")
-maybe'jstype ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'jstype" a) =>
-               Lens.Family2.LensLike' f s a
-maybe'jstype
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'jstype")
-maybe'label ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'label" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'label
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'label")
-maybe'lazy ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'lazy" a) =>
-             Lens.Family2.LensLike' f s a
-maybe'lazy
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'lazy")
-maybe'leadingComments ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'leadingComments" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'leadingComments
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'leadingComments")
-maybe'mapEntry ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'mapEntry" a) =>
-                 Lens.Family2.LensLike' f s a
-maybe'mapEntry
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'mapEntry")
-maybe'messageSetWireFormat ::
-                           forall f s a .
-                             (Prelude.Functor f,
-                              Lens.Labels.HasLens' s "maybe'messageSetWireFormat" a) =>
-                             Lens.Family2.LensLike' f s a
-maybe'messageSetWireFormat
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'messageSetWireFormat")
-maybe'name ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'name" a) =>
-             Lens.Family2.LensLike' f s a
-maybe'name
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'name")
-maybe'negativeIntValue ::
-                       forall f s a .
-                         (Prelude.Functor f,
-                          Lens.Labels.HasLens' s "maybe'negativeIntValue" a) =>
-                         Lens.Family2.LensLike' f s a
-maybe'negativeIntValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'negativeIntValue")
-maybe'noStandardDescriptorAccessor ::
-                                   forall f s a .
-                                     (Prelude.Functor f,
-                                      Lens.Labels.HasLens' s "maybe'noStandardDescriptorAccessor"
-                                        a) =>
-                                     Lens.Family2.LensLike' f s a
-maybe'noStandardDescriptorAccessor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'noStandardDescriptorAccessor")
-maybe'number ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'number" a) =>
-               Lens.Family2.LensLike' f s a
-maybe'number
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'number")
-maybe'objcClassPrefix ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'objcClassPrefix" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'objcClassPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'objcClassPrefix")
-maybe'oneofIndex ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'oneofIndex" a) =>
-                   Lens.Family2.LensLike' f s a
-maybe'oneofIndex
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'oneofIndex")
-maybe'optimizeFor ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'optimizeFor" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'optimizeFor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'optimizeFor")
-maybe'options ::
-              forall f s a .
-                (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'options" a) =>
-                Lens.Family2.LensLike' f s a
-maybe'options
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'options")
-maybe'outputType ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'outputType" a) =>
-                   Lens.Family2.LensLike' f s a
-maybe'outputType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'outputType")
-maybe'package ::
-              forall f s a .
-                (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'package" a) =>
-                Lens.Family2.LensLike' f s a
-maybe'package
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'package")
-maybe'packed ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'packed" a) =>
-               Lens.Family2.LensLike' f s a
-maybe'packed
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'packed")
-maybe'phpClassPrefix ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "maybe'phpClassPrefix" a) =>
-                       Lens.Family2.LensLike' f s a
-maybe'phpClassPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'phpClassPrefix")
-maybe'phpGenericServices ::
-                         forall f s a .
-                           (Prelude.Functor f,
-                            Lens.Labels.HasLens' s "maybe'phpGenericServices" a) =>
-                           Lens.Family2.LensLike' f s a
-maybe'phpGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'phpGenericServices")
-maybe'phpMetadataNamespace ::
-                           forall f s a .
-                             (Prelude.Functor f,
-                              Lens.Labels.HasLens' s "maybe'phpMetadataNamespace" a) =>
-                             Lens.Family2.LensLike' f s a
-maybe'phpMetadataNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'phpMetadataNamespace")
-maybe'phpNamespace ::
-                   forall f s a .
-                     (Prelude.Functor f,
-                      Lens.Labels.HasLens' s "maybe'phpNamespace" a) =>
-                     Lens.Family2.LensLike' f s a
-maybe'phpNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'phpNamespace")
-maybe'positiveIntValue ::
-                       forall f s a .
-                         (Prelude.Functor f,
-                          Lens.Labels.HasLens' s "maybe'positiveIntValue" a) =>
-                         Lens.Family2.LensLike' f s a
-maybe'positiveIntValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'positiveIntValue")
-maybe'pyGenericServices ::
-                        forall f s a .
-                          (Prelude.Functor f,
-                           Lens.Labels.HasLens' s "maybe'pyGenericServices" a) =>
-                          Lens.Family2.LensLike' f s a
-maybe'pyGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'pyGenericServices")
-maybe'rubyPackage ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'rubyPackage" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'rubyPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'rubyPackage")
-maybe'serverStreaming ::
-                      forall f s a .
-                        (Prelude.Functor f,
-                         Lens.Labels.HasLens' s "maybe'serverStreaming" a) =>
-                        Lens.Family2.LensLike' f s a
-maybe'serverStreaming
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'serverStreaming")
-maybe'sourceCodeInfo ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "maybe'sourceCodeInfo" a) =>
-                       Lens.Family2.LensLike' f s a
-maybe'sourceCodeInfo
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'sourceCodeInfo")
-maybe'sourceFile ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'sourceFile" a) =>
-                   Lens.Family2.LensLike' f s a
-maybe'sourceFile
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'sourceFile")
-maybe'start ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'start" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'start
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'start")
-maybe'stringValue ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'stringValue" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'stringValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'stringValue")
-maybe'swiftPrefix ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "maybe'swiftPrefix" a) =>
-                    Lens.Family2.LensLike' f s a
-maybe'swiftPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'swiftPrefix")
-maybe'syntax ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'syntax" a) =>
-               Lens.Family2.LensLike' f s a
-maybe'syntax
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'syntax")
-maybe'trailingComments ::
-                       forall f s a .
-                         (Prelude.Functor f,
-                          Lens.Labels.HasLens' s "maybe'trailingComments" a) =>
-                         Lens.Family2.LensLike' f s a
-maybe'trailingComments
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "maybe'trailingComments")
-maybe'type' ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'type'" a) =>
-              Lens.Family2.LensLike' f s a
-maybe'type'
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'type'")
-maybe'typeName ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'typeName" a) =>
-                 Lens.Family2.LensLike' f s a
-maybe'typeName
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'typeName")
-maybe'weak ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "maybe'weak" a) =>
-             Lens.Family2.LensLike' f s a
-maybe'weak
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "maybe'weak")
-messageSetWireFormat ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "messageSetWireFormat" a) =>
-                       Lens.Family2.LensLike' f s a
-messageSetWireFormat
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "messageSetWireFormat")
-messageType ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "messageType" a) =>
-              Lens.Family2.LensLike' f s a
-messageType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "messageType")
-method ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "method" a) =>
-         Lens.Family2.LensLike' f s a
-method
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "method")
-name ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "name" a) =>
-       Lens.Family2.LensLike' f s a
-name
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "name")
-namePart ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "namePart" a) =>
-           Lens.Family2.LensLike' f s a
-namePart
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "namePart")
-negativeIntValue ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "negativeIntValue" a) =>
-                   Lens.Family2.LensLike' f s a
-negativeIntValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "negativeIntValue")
-nestedType ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "nestedType" a) =>
-             Lens.Family2.LensLike' f s a
-nestedType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "nestedType")
-noStandardDescriptorAccessor ::
-                             forall f s a .
-                               (Prelude.Functor f,
-                                Lens.Labels.HasLens' s "noStandardDescriptorAccessor" a) =>
-                               Lens.Family2.LensLike' f s a
-noStandardDescriptorAccessor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "noStandardDescriptorAccessor")
-number ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "number" a) =>
-         Lens.Family2.LensLike' f s a
-number
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "number")
-objcClassPrefix ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "objcClassPrefix" a) =>
-                  Lens.Family2.LensLike' f s a
-objcClassPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "objcClassPrefix")
-oneofDecl ::
-          forall f s a .
-            (Prelude.Functor f, Lens.Labels.HasLens' s "oneofDecl" a) =>
-            Lens.Family2.LensLike' f s a
-oneofDecl
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "oneofDecl")
-oneofIndex ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "oneofIndex" a) =>
-             Lens.Family2.LensLike' f s a
-oneofIndex
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "oneofIndex")
-optimizeFor ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "optimizeFor" a) =>
-              Lens.Family2.LensLike' f s a
-optimizeFor
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "optimizeFor")
-options ::
-        forall f s a .
-          (Prelude.Functor f, Lens.Labels.HasLens' s "options" a) =>
-          Lens.Family2.LensLike' f s a
-options
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "options")
-outputType ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "outputType" a) =>
-             Lens.Family2.LensLike' f s a
-outputType
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "outputType")
-package ::
-        forall f s a .
-          (Prelude.Functor f, Lens.Labels.HasLens' s "package" a) =>
-          Lens.Family2.LensLike' f s a
-package
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "package")
-packed ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "packed" a) =>
-         Lens.Family2.LensLike' f s a
-packed
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "packed")
-path ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "path" a) =>
-       Lens.Family2.LensLike' f s a
-path
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "path")
-phpClassPrefix ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "phpClassPrefix" a) =>
-                 Lens.Family2.LensLike' f s a
-phpClassPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "phpClassPrefix")
-phpGenericServices ::
-                   forall f s a .
-                     (Prelude.Functor f,
-                      Lens.Labels.HasLens' s "phpGenericServices" a) =>
-                     Lens.Family2.LensLike' f s a
-phpGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "phpGenericServices")
-phpMetadataNamespace ::
-                     forall f s a .
-                       (Prelude.Functor f,
-                        Lens.Labels.HasLens' s "phpMetadataNamespace" a) =>
-                       Lens.Family2.LensLike' f s a
-phpMetadataNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "phpMetadataNamespace")
-phpNamespace ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "phpNamespace" a) =>
-               Lens.Family2.LensLike' f s a
-phpNamespace
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "phpNamespace")
-positiveIntValue ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "positiveIntValue" a) =>
-                   Lens.Family2.LensLike' f s a
-positiveIntValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "positiveIntValue")
-publicDependency ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "publicDependency" a) =>
-                   Lens.Family2.LensLike' f s a
-publicDependency
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "publicDependency")
-pyGenericServices ::
-                  forall f s a .
-                    (Prelude.Functor f,
-                     Lens.Labels.HasLens' s "pyGenericServices" a) =>
-                    Lens.Family2.LensLike' f s a
-pyGenericServices
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "pyGenericServices")
-reservedName ::
-             forall f s a .
-               (Prelude.Functor f, Lens.Labels.HasLens' s "reservedName" a) =>
-               Lens.Family2.LensLike' f s a
-reservedName
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedName")
-reservedRange ::
-              forall f s a .
-                (Prelude.Functor f, Lens.Labels.HasLens' s "reservedRange" a) =>
-                Lens.Family2.LensLike' f s a
-reservedRange
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "reservedRange")
-rubyPackage ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "rubyPackage" a) =>
-              Lens.Family2.LensLike' f s a
-rubyPackage
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "rubyPackage")
-serverStreaming ::
-                forall f s a .
-                  (Prelude.Functor f, Lens.Labels.HasLens' s "serverStreaming" a) =>
-                  Lens.Family2.LensLike' f s a
-serverStreaming
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "serverStreaming")
-service ::
-        forall f s a .
-          (Prelude.Functor f, Lens.Labels.HasLens' s "service" a) =>
-          Lens.Family2.LensLike' f s a
-service
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "service")
-sourceCodeInfo ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "sourceCodeInfo" a) =>
-                 Lens.Family2.LensLike' f s a
-sourceCodeInfo
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sourceCodeInfo")
-sourceFile ::
-           forall f s a .
-             (Prelude.Functor f, Lens.Labels.HasLens' s "sourceFile" a) =>
-             Lens.Family2.LensLike' f s a
-sourceFile
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "sourceFile")
-span ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "span" a) =>
-       Lens.Family2.LensLike' f s a
-span
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "span")
-start ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "start" a) =>
-        Lens.Family2.LensLike' f s a
-start
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "start")
-stringValue ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "stringValue" a) =>
-              Lens.Family2.LensLike' f s a
-stringValue
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "stringValue")
-swiftPrefix ::
-            forall f s a .
-              (Prelude.Functor f, Lens.Labels.HasLens' s "swiftPrefix" a) =>
-              Lens.Family2.LensLike' f s a
-swiftPrefix
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "swiftPrefix")
-syntax ::
-       forall f s a .
-         (Prelude.Functor f, Lens.Labels.HasLens' s "syntax" a) =>
-         Lens.Family2.LensLike' f s a
-syntax
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "syntax")
-trailingComments ::
-                 forall f s a .
-                   (Prelude.Functor f, Lens.Labels.HasLens' s "trailingComments" a) =>
-                   Lens.Family2.LensLike' f s a
-trailingComments
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "trailingComments")
-type' ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "type'" a) =>
-        Lens.Family2.LensLike' f s a
-type'
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "type'")
-typeName ::
-         forall f s a .
-           (Prelude.Functor f, Lens.Labels.HasLens' s "typeName" a) =>
-           Lens.Family2.LensLike' f s a
-typeName
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "typeName")
-uninterpretedOption ::
-                    forall f s a .
-                      (Prelude.Functor f,
-                       Lens.Labels.HasLens' s "uninterpretedOption" a) =>
-                      Lens.Family2.LensLike' f s a
-uninterpretedOption
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) ::
-         (Lens.Labels.Proxy#) "uninterpretedOption")
-value ::
-      forall f s a .
-        (Prelude.Functor f, Lens.Labels.HasLens' s "value" a) =>
-        Lens.Family2.LensLike' f s a
-value
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "value")
-weak ::
-     forall f s a .
-       (Prelude.Functor f, Lens.Labels.HasLens' s "weak" a) =>
-       Lens.Family2.LensLike' f s a
-weak
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "weak")
-weakDependency ::
-               forall f s a .
-                 (Prelude.Functor f, Lens.Labels.HasLens' s "weakDependency" a) =>
-                 Lens.Family2.LensLike' f s a
-weakDependency
-  = Lens.Labels.lensOf'
-      ((Lens.Labels.proxy#) :: (Lens.Labels.Proxy#) "weakDependency")
diff --git a/tests/growing_test.hs b/tests/growing_test.hs
new file mode 100644
--- /dev/null
+++ b/tests/growing_test.hs
@@ -0,0 +1,37 @@
+-- | Unit and property tests for Data.ProtoLens.Encoding.Growing.
+module Main (main) where
+
+import Control.Monad (void)
+import Control.Monad.ST
+import Data.Foldable (foldlM)
+import qualified Data.Vector.Unboxed as V
+import Test.QuickCheck
+import Test.Tasty (defaultMain, testGroup)
+import Test.Tasty.QuickCheck (testProperty)
+
+import Data.ProtoLens.Encoding.Growing
+
+main :: IO ()
+main = defaultMain $ testGroup "tests"
+    [ testProperty "fromList" testFromList
+    , testProperty "unchanged" testUnchanged
+    ]
+
+testFromList :: [Int] -> Property
+testFromList xs = fromListGrowing xs === V.fromList xs
+
+fromListGrowing :: V.Unbox a => [a] -> V.Vector a
+fromListGrowing xs0 = runST (new >>= fill xs0 >>= unsafeFreeze)
+
+fill :: V.Unbox a => [a] -> Growing V.Vector s a -> ST s (Growing V.Vector s a)
+fill xs v = foldlM append v xs
+
+-- Test a weak form of immutability: filling in more values (which may or may
+-- not cause reallocations) doesn't affect the current value.
+testUnchanged :: [Int] -> [Int] -> Property
+testUnchanged xs ys =
+    let xs' = runST (do
+                        v <- new >>= fill xs
+                        void $ fill ys v
+                        unsafeFreeze v)
+    in xs' === V.fromList xs
diff --git a/tests/parser_test.hs b/tests/parser_test.hs
new file mode 100644
--- /dev/null
+++ b/tests/parser_test.hs
@@ -0,0 +1,96 @@
+-- | Unit and property tests for our custom parsing monad.
+module Main (main) where
+
+import qualified Data.ByteString as B
+import Data.Either (isLeft)
+
+import Test.QuickCheck
+import Test.Tasty (defaultMain, testGroup, TestTree)
+import Test.Tasty.QuickCheck (testProperty)
+
+import Data.ProtoLens.Encoding.Bytes
+import Data.ProtoLens.Encoding.Parser
+
+main :: IO ()
+main = defaultMain $ testGroup "tests"
+    [ testGroup "Parser" testParser
+    , testGroup "getWord8" testGetWord8
+    , testGroup "getBytes" testGetBytes
+    , testGroup "getWord32le" testGetWord32le
+    , testGroup "failure" testFailure
+    , testGroup "isolate" testIsolate
+    ]
+
+testParser :: [TestTree]
+testParser =
+    -- Test out the Applicative instance by using "traverse" to read the same number of bytes
+    -- as in the input.
+    -- "traverse (const f) g" runs f once for every element of g.
+    [ testProperty "traverse" $ \ws -> runParser (traverse (const getWord8) ws)
+                                        (B.pack ws)
+                                    === Right ws
+    ]
+
+testGetWord8 :: [TestTree]
+testGetWord8 =
+    [ testProperty "atEnd" $ \ws -> runParser atEnd (B.pack ws) === Right (null ws)
+    , testProperty "manyTillEnd"
+            $ \ws -> runParser (manyTillEnd getWord8) (B.pack ws) === Right ws
+    ]
+
+testGetBytes :: [TestTree]
+testGetBytes =
+    [ testProperty "many"
+            $ \ws -> let
+                packed = map B.pack ws
+                in runParser (mapM (getBytes . B.length) packed) (B.concat packed)
+                    === Right packed
+    , testProperty "negative length"
+        $ \n ws -> n < 0 ==> counterexampleF isLeft
+                                (runParser (getBytes n) $ B.pack ws)
+    ]
+
+testGetWord32le :: [TestTree]
+testGetWord32le =
+    [ testProperty "align"
+        $ \ws -> length ws `mod` 4 /= 0 ==>
+                    counterexampleF isLeft (runParser (manyTillEnd getWord32le) (B.pack ws))
+    , testProperty "manyTillEnd" $ \ws ->
+            runParser (manyTillEnd getWord32le) (runBuilder $ foldMap putFixed32 ws)
+                === Right ws
+    ]
+
+testFailure :: [TestTree]
+testFailure =
+    [ testProperty "fail-fast" $ \bs ->
+        runParser (fail "abcde") (B.pack bs)
+            === (Left "abcde" :: Either String ())
+    , testProperty "<?>" $ \bs ->
+        runParser (fail "abcde" <?> "fghij") (B.pack bs)
+            === (Left "fghij: abcde" :: Either String ())
+    ]
+
+testIsolate :: [TestTree]
+testIsolate =
+    [ testProperty "many" $ \bs bs' ->
+        runParser ((,) <$> isolate (length bs) (manyTillEnd getWord8) <*>
+                        manyTillEnd getWord8)
+            (B.pack (bs ++ bs'))
+            == Right (bs, bs')
+    , testProperty "negative length" $ \n ws ->
+        n < 0 ==> counterexampleF isLeft $ runParser (isolate n getWord8) $ B.pack ws
+    ]
+
+-- Since this is a test, just implement the slow stack-heavy way.
+manyTillEnd :: Parser a -> Parser [a]
+manyTillEnd p = do
+    end <- atEnd
+    if end
+        then return []
+        else do
+            x <- p
+            xs <- manyTillEnd p
+            return $ x : xs
+
+counterexampleF :: (Testable prop, Show a) => (a -> prop) -> a -> Property
+counterexampleF f x = counterexample (show x) $ f x
