diff --git a/protobuf/CHANGELOG.md b/protobuf/CHANGELOG.md
index e3e0336..7b39814 100644
--- a/protobuf/CHANGELOG.md
+++ b/protobuf/CHANGELOG.md
@@ -1,12 +1,11 @@
 ## 0.14.4
-
 * Add `permissiveEnums` option to `mergeFromProto3Json`.
   It will do a case-insensitive matching of enum values ignoring `-` and `_`.
-
 * Add support for 'ensureX' methods generated by `protoc_plugin` 19.0.0.
-
 * Add specialized getters for `String`, `int`, and `bool` with usual default values.
 * Shrink dart2js generated code for `getDefault()`.
+* Added an annotation class `TagNumber`. This is used by code generated by
+  `protoc_plugin` from version 19.0.0.
 
 ## 0.14.3
 
diff --git a/protobuf/lib/src/protobuf/builder_info.dart b/protobuf/lib/src/protobuf/builder_info.dart
index dc49cdb..86e6b82 100644
--- a/protobuf/lib/src/protobuf/builder_info.dart
+++ b/protobuf/lib/src/protobuf/builder_info.dart
@@ -285,3 +285,15 @@
     return f(rawValue);
   }
 }
+
+/// Annotation for marking accessors that belong together.
+class TagNumber {
+  final int tagNumber;
+
+  /// Annotation for marking accessors that belong together.
+  ///
+  /// Allows tooling to associate related accessors.
+  /// [tagNumber] is the protobuf tagnumber associated with the annotated
+  /// accessor.
+  const TagNumber(this.tagNumber);
+}
diff --git a/protobuf/pubspec.yaml b/protobuf/pubspec.yaml
index 4cd2d7e..d3ced8c 100644
--- a/protobuf/pubspec.yaml
+++ b/protobuf/pubspec.yaml
@@ -1,5 +1,5 @@
 name: protobuf
-version: 0.14.4-dev
+version: 0.14.4
 author: Dart Team <misc@dartlang.org>
 description: >
   Runtime library for protocol buffers support.
diff --git a/protoc_plugin/CHANGELOG.md b/protoc_plugin/CHANGELOG.md
index d37ed94..7bfe13a 100644
--- a/protoc_plugin/CHANGELOG.md
+++ b/protoc_plugin/CHANGELOG.md
@@ -1,9 +1,16 @@
-## 19.0.0-dev
+## 19.0.0
 * Breaking: Generates code that requires at least `protobuf` 0.14.4.
+  If protoc_plugin is installed in your path with `pub global activate` you can upgrade with `pub global activate protoc_plugin 19.0.0`
   - GeneratedMessage classes now have methods `ensureX` for each message field X.
   - Add specialized getters for `String`, `int`, and `bool` with usual default values.
+  - Annotate generated accessors with the tag number of the associated field.
 * Breaking: Use unmangled names for the string representation of enum values.
   Mangled names would lead to wrong proto3 json en- and decoding.
+* Annotate generated accessors with the tag number of the associated field.
+
+## 18.0.3
+
+* Fix: Allow decoding tagnumbers of up to 29 bits. Would fail before with more than 28 bits.
 
 ## 18.0.2
 
diff --git a/protoc_plugin/lib/message_generator.dart b/protoc_plugin/lib/message_generator.dart
index d38f7d8..221d827 100644
--- a/protoc_plugin/lib/message_generator.dart
+++ b/protoc_plugin/lib/message_generator.dart
@@ -453,6 +453,7 @@
 
     _emitDeprecatedIf(field.isDeprecated, out);
     _emitOverrideIf(field.overridesGetter, out);
+    _emitIndexAnnotation(field.number, out);
     final getterExpr = _getterExpression(fieldTypeString, field.index,
         defaultExpr, field.isRepeated, field.isMapField);
     out.printlnAnnotated(
@@ -480,6 +481,7 @@
       var fastSetter = field.baseType.setter;
       _emitDeprecatedIf(field.isDeprecated, out);
       _emitOverrideIf(field.overridesSetter, out);
+      _emitIndexAnnotation(field.number, out);
       if (fastSetter != null) {
         out.printlnAnnotated(
             'set ${names.fieldName}'
@@ -507,6 +509,7 @@
       }
       _emitDeprecatedIf(field.isDeprecated, out);
       _emitOverrideIf(field.overridesHasMethod, out);
+      _emitIndexAnnotation(field.number, out);
       out.printlnAnnotated(
           '$_coreImportPrefix.bool ${names.hasMethodName}() =>'
           ' \$_has(${field.index});',
@@ -518,6 +521,7 @@
           ]);
       _emitDeprecatedIf(field.isDeprecated, out);
       _emitOverrideIf(field.overridesClearMethod, out);
+      _emitIndexAnnotation(field.number, out);
       out.printlnAnnotated(
           'void ${names.clearMethodName}() =>'
           ' clearField(${field.number});',
@@ -528,6 +532,8 @@
                 start: 'void '.length)
           ]);
       if (field.baseType.isMessage) {
+        _emitDeprecatedIf(field.isDeprecated, out);
+        _emitIndexAnnotation(field.number, out);
         out.printlnAnnotated(
             '${fieldTypeString} ${names.ensureMethodName}() => '
             '\$_ensure(${field.index});',
@@ -586,6 +592,10 @@
     }
   }
 
+  void _emitIndexAnnotation(int index, IndentingWriter out) {
+    out.println('@$_protobufImportPrefix.TagNumber($index)');
+  }
+
   void generateEnums(IndentingWriter out) {
     for (EnumGenerator e in _enumGenerators) {
       e.generate(out);
diff --git a/protoc_plugin/lib/src/dart_options.pb.dart b/protoc_plugin/lib/src/dart_options.pb.dart
index 169aaa4..ad2b620 100644
--- a/protoc_plugin/lib/src/dart_options.pb.dart
+++ b/protoc_plugin/lib/src/dart_options.pb.dart
@@ -39,28 +39,40 @@
       _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<DartMixin>(create);
   static DartMixin _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.String get importFrom => $_getSZ(1);
+  @$pb.TagNumber(2)
   set importFrom($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasImportFrom() => $_has(1);
+  @$pb.TagNumber(2)
   void clearImportFrom() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.String get parent => $_getSZ(2);
+  @$pb.TagNumber(3)
   set parent($core.String v) {
     $_setString(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasParent() => $_has(2);
+  @$pb.TagNumber(3)
   void clearParent() => clearField(3);
 }
 
@@ -93,6 +105,7 @@
       _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Imports>(create);
   static Imports _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<DartMixin> get mixins => $_getList(0);
 }
 
diff --git a/protoc_plugin/lib/src/descriptor.pb.dart b/protoc_plugin/lib/src/descriptor.pb.dart
index 7ad4303..59408ef 100644
--- a/protoc_plugin/lib/src/descriptor.pb.dart
+++ b/protoc_plugin/lib/src/descriptor.pb.dart
@@ -43,6 +43,7 @@
       $pb.GeneratedMessage.$_defaultFor<FileDescriptorSet>(create);
   static FileDescriptorSet _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<FileDescriptorProto> get file => $_getList(0);
 }
 
@@ -90,58 +91,89 @@
       $pb.GeneratedMessage.$_defaultFor<FileDescriptorProto>(create);
   static FileDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.String get package => $_getSZ(1);
+  @$pb.TagNumber(2)
   set package($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasPackage() => $_has(1);
+  @$pb.TagNumber(2)
   void clearPackage() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.List<$core.String> get dependency => $_getList(2);
 
+  @$pb.TagNumber(4)
   $core.List<DescriptorProto> get messageType => $_getList(3);
 
+  @$pb.TagNumber(5)
   $core.List<EnumDescriptorProto> get enumType => $_getList(4);
 
+  @$pb.TagNumber(6)
   $core.List<ServiceDescriptorProto> get service => $_getList(5);
 
+  @$pb.TagNumber(7)
   $core.List<FieldDescriptorProto> get extension => $_getList(6);
 
+  @$pb.TagNumber(8)
   FileOptions get options => $_getN(7);
+  @$pb.TagNumber(8)
   set options(FileOptions v) {
     setField(8, v);
   }
 
+  @$pb.TagNumber(8)
   $core.bool hasOptions() => $_has(7);
+  @$pb.TagNumber(8)
   void clearOptions() => clearField(8);
+  @$pb.TagNumber(8)
+  FileOptions ensureOptions() => $_ensure(7);
 
+  @$pb.TagNumber(9)
   SourceCodeInfo get sourceCodeInfo => $_getN(8);
+  @$pb.TagNumber(9)
   set sourceCodeInfo(SourceCodeInfo v) {
     setField(9, v);
   }
 
+  @$pb.TagNumber(9)
   $core.bool hasSourceCodeInfo() => $_has(8);
+  @$pb.TagNumber(9)
   void clearSourceCodeInfo() => clearField(9);
+  @$pb.TagNumber(9)
+  SourceCodeInfo ensureSourceCodeInfo() => $_ensure(8);
 
+  @$pb.TagNumber(10)
   $core.List<$core.int> get publicDependency => $_getList(9);
 
+  @$pb.TagNumber(11)
   $core.List<$core.int> get weakDependency => $_getList(10);
 
+  @$pb.TagNumber(12)
   $core.String get syntax => $_getSZ(11);
+  @$pb.TagNumber(12)
   set syntax($core.String v) {
     $_setString(11, v);
   }
 
+  @$pb.TagNumber(12)
   $core.bool hasSyntax() => $_has(11);
+  @$pb.TagNumber(12)
   void clearSyntax() => clearField(12);
 }
 
@@ -180,20 +212,28 @@
       $pb.GeneratedMessage.$_defaultFor<DescriptorProto_ExtensionRange>(create);
   static DescriptorProto_ExtensionRange _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.int get start => $_getIZ(0);
+  @$pb.TagNumber(1)
   set start($core.int v) {
     $_setSignedInt32(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasStart() => $_has(0);
+  @$pb.TagNumber(1)
   void clearStart() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.int get end => $_getIZ(1);
+  @$pb.TagNumber(2)
   set end($core.int v) {
     $_setSignedInt32(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasEnd() => $_has(1);
+  @$pb.TagNumber(2)
   void clearEnd() => clearField(2);
 }
 
@@ -232,20 +272,28 @@
       $pb.GeneratedMessage.$_defaultFor<DescriptorProto_ReservedRange>(create);
   static DescriptorProto_ReservedRange _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.int get start => $_getIZ(0);
+  @$pb.TagNumber(1)
   set start($core.int v) {
     $_setSignedInt32(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasStart() => $_has(0);
+  @$pb.TagNumber(1)
   void clearStart() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.int get end => $_getIZ(1);
+  @$pb.TagNumber(2)
   set end($core.int v) {
     $_setSignedInt32(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasEnd() => $_has(1);
+  @$pb.TagNumber(2)
   void clearEnd() => clearField(2);
 }
 
@@ -294,36 +342,54 @@
       $pb.GeneratedMessage.$_defaultFor<DescriptorProto>(create);
   static DescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.List<FieldDescriptorProto> get field => $_getList(1);
 
+  @$pb.TagNumber(3)
   $core.List<DescriptorProto> get nestedType => $_getList(2);
 
+  @$pb.TagNumber(4)
   $core.List<EnumDescriptorProto> get enumType => $_getList(3);
 
+  @$pb.TagNumber(5)
   $core.List<DescriptorProto_ExtensionRange> get extensionRange => $_getList(4);
 
+  @$pb.TagNumber(6)
   $core.List<FieldDescriptorProto> get extension => $_getList(5);
 
+  @$pb.TagNumber(7)
   MessageOptions get options => $_getN(6);
+  @$pb.TagNumber(7)
   set options(MessageOptions v) {
     setField(7, v);
   }
 
+  @$pb.TagNumber(7)
   $core.bool hasOptions() => $_has(6);
+  @$pb.TagNumber(7)
   void clearOptions() => clearField(7);
+  @$pb.TagNumber(7)
+  MessageOptions ensureOptions() => $_ensure(6);
 
+  @$pb.TagNumber(8)
   $core.List<OneofDescriptorProto> get oneofDecl => $_getList(7);
 
+  @$pb.TagNumber(9)
   $core.List<DescriptorProto_ReservedRange> get reservedRange => $_getList(8);
 
+  @$pb.TagNumber(10)
   $core.List<$core.String> get reservedName => $_getList(9);
 }
 
@@ -371,84 +437,126 @@
       $pb.GeneratedMessage.$_defaultFor<FieldDescriptorProto>(create);
   static FieldDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.String get extendee => $_getSZ(1);
+  @$pb.TagNumber(2)
   set extendee($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasExtendee() => $_has(1);
+  @$pb.TagNumber(2)
   void clearExtendee() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.int get number => $_getIZ(2);
+  @$pb.TagNumber(3)
   set number($core.int v) {
     $_setSignedInt32(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasNumber() => $_has(2);
+  @$pb.TagNumber(3)
   void clearNumber() => clearField(3);
 
+  @$pb.TagNumber(4)
   FieldDescriptorProto_Label get label => $_getN(3);
+  @$pb.TagNumber(4)
   set label(FieldDescriptorProto_Label v) {
     setField(4, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasLabel() => $_has(3);
+  @$pb.TagNumber(4)
   void clearLabel() => clearField(4);
 
+  @$pb.TagNumber(5)
   FieldDescriptorProto_Type get type => $_getN(4);
+  @$pb.TagNumber(5)
   set type(FieldDescriptorProto_Type v) {
     setField(5, v);
   }
 
+  @$pb.TagNumber(5)
   $core.bool hasType() => $_has(4);
+  @$pb.TagNumber(5)
   void clearType() => clearField(5);
 
+  @$pb.TagNumber(6)
   $core.String get typeName => $_getSZ(5);
+  @$pb.TagNumber(6)
   set typeName($core.String v) {
     $_setString(5, v);
   }
 
+  @$pb.TagNumber(6)
   $core.bool hasTypeName() => $_has(5);
+  @$pb.TagNumber(6)
   void clearTypeName() => clearField(6);
 
+  @$pb.TagNumber(7)
   $core.String get defaultValue => $_getSZ(6);
+  @$pb.TagNumber(7)
   set defaultValue($core.String v) {
     $_setString(6, v);
   }
 
+  @$pb.TagNumber(7)
   $core.bool hasDefaultValue() => $_has(6);
+  @$pb.TagNumber(7)
   void clearDefaultValue() => clearField(7);
 
+  @$pb.TagNumber(8)
   FieldOptions get options => $_getN(7);
+  @$pb.TagNumber(8)
   set options(FieldOptions v) {
     setField(8, v);
   }
 
+  @$pb.TagNumber(8)
   $core.bool hasOptions() => $_has(7);
+  @$pb.TagNumber(8)
   void clearOptions() => clearField(8);
+  @$pb.TagNumber(8)
+  FieldOptions ensureOptions() => $_ensure(7);
 
+  @$pb.TagNumber(9)
   $core.int get oneofIndex => $_getIZ(8);
+  @$pb.TagNumber(9)
   set oneofIndex($core.int v) {
     $_setSignedInt32(8, v);
   }
 
+  @$pb.TagNumber(9)
   $core.bool hasOneofIndex() => $_has(8);
+  @$pb.TagNumber(9)
   void clearOneofIndex() => clearField(9);
 
+  @$pb.TagNumber(10)
   $core.String get jsonName => $_getSZ(9);
+  @$pb.TagNumber(10)
   set jsonName($core.String v) {
     $_setString(9, v);
   }
 
+  @$pb.TagNumber(10)
   $core.bool hasJsonName() => $_has(9);
+  @$pb.TagNumber(10)
   void clearJsonName() => clearField(10);
 }
 
@@ -482,21 +590,31 @@
       $pb.GeneratedMessage.$_defaultFor<OneofDescriptorProto>(create);
   static OneofDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   OneofOptions get options => $_getN(1);
+  @$pb.TagNumber(2)
   set options(OneofOptions v) {
     setField(2, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasOptions() => $_has(1);
+  @$pb.TagNumber(2)
   void clearOptions() => clearField(2);
+  @$pb.TagNumber(2)
+  OneofOptions ensureOptions() => $_ensure(1);
 }
 
 class EnumDescriptorProto extends $pb.GeneratedMessage {
@@ -530,23 +648,34 @@
       $pb.GeneratedMessage.$_defaultFor<EnumDescriptorProto>(create);
   static EnumDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.List<EnumValueDescriptorProto> get value => $_getList(1);
 
+  @$pb.TagNumber(3)
   EnumOptions get options => $_getN(2);
+  @$pb.TagNumber(3)
   set options(EnumOptions v) {
     setField(3, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasOptions() => $_has(2);
+  @$pb.TagNumber(3)
   void clearOptions() => clearField(3);
+  @$pb.TagNumber(3)
+  EnumOptions ensureOptions() => $_ensure(2);
 }
 
 class EnumValueDescriptorProto extends $pb.GeneratedMessage {
@@ -581,29 +710,43 @@
       $pb.GeneratedMessage.$_defaultFor<EnumValueDescriptorProto>(create);
   static EnumValueDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.int get number => $_getIZ(1);
+  @$pb.TagNumber(2)
   set number($core.int v) {
     $_setSignedInt32(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasNumber() => $_has(1);
+  @$pb.TagNumber(2)
   void clearNumber() => clearField(2);
 
+  @$pb.TagNumber(3)
   EnumValueOptions get options => $_getN(2);
+  @$pb.TagNumber(3)
   set options(EnumValueOptions v) {
     setField(3, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasOptions() => $_has(2);
+  @$pb.TagNumber(3)
   void clearOptions() => clearField(3);
+  @$pb.TagNumber(3)
+  EnumValueOptions ensureOptions() => $_ensure(2);
 }
 
 class ServiceDescriptorProto extends $pb.GeneratedMessage {
@@ -639,23 +782,34 @@
       $pb.GeneratedMessage.$_defaultFor<ServiceDescriptorProto>(create);
   static ServiceDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.List<MethodDescriptorProto> get method => $_getList(1);
 
+  @$pb.TagNumber(3)
   ServiceOptions get options => $_getN(2);
+  @$pb.TagNumber(3)
   set options(ServiceOptions v) {
     setField(3, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasOptions() => $_has(2);
+  @$pb.TagNumber(3)
   void clearOptions() => clearField(3);
+  @$pb.TagNumber(3)
+  ServiceOptions ensureOptions() => $_ensure(2);
 }
 
 class MethodDescriptorProto extends $pb.GeneratedMessage {
@@ -693,52 +847,78 @@
       $pb.GeneratedMessage.$_defaultFor<MethodDescriptorProto>(create);
   static MethodDescriptorProto _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.String get inputType => $_getSZ(1);
+  @$pb.TagNumber(2)
   set inputType($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasInputType() => $_has(1);
+  @$pb.TagNumber(2)
   void clearInputType() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.String get outputType => $_getSZ(2);
+  @$pb.TagNumber(3)
   set outputType($core.String v) {
     $_setString(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasOutputType() => $_has(2);
+  @$pb.TagNumber(3)
   void clearOutputType() => clearField(3);
 
+  @$pb.TagNumber(4)
   MethodOptions get options => $_getN(3);
+  @$pb.TagNumber(4)
   set options(MethodOptions v) {
     setField(4, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasOptions() => $_has(3);
+  @$pb.TagNumber(4)
   void clearOptions() => clearField(4);
+  @$pb.TagNumber(4)
+  MethodOptions ensureOptions() => $_ensure(3);
 
+  @$pb.TagNumber(5)
   $core.bool get clientStreaming => $_getBF(4);
+  @$pb.TagNumber(5)
   set clientStreaming($core.bool v) {
     $_setBool(4, v);
   }
 
+  @$pb.TagNumber(5)
   $core.bool hasClientStreaming() => $_has(4);
+  @$pb.TagNumber(5)
   void clearClientStreaming() => clearField(5);
 
+  @$pb.TagNumber(6)
   $core.bool get serverStreaming => $_getBF(5);
+  @$pb.TagNumber(6)
   set serverStreaming($core.bool v) {
     $_setBool(5, v);
   }
 
+  @$pb.TagNumber(6)
   $core.bool hasServerStreaming() => $_has(5);
+  @$pb.TagNumber(6)
   void clearServerStreaming() => clearField(6);
 }
 
@@ -791,146 +971,215 @@
       $pb.GeneratedMessage.$_defaultFor<FileOptions>(create);
   static FileOptions _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get javaPackage => $_getSZ(0);
+  @$pb.TagNumber(1)
   set javaPackage($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasJavaPackage() => $_has(0);
+  @$pb.TagNumber(1)
   void clearJavaPackage() => clearField(1);
 
+  @$pb.TagNumber(8)
   $core.String get javaOuterClassname => $_getSZ(1);
+  @$pb.TagNumber(8)
   set javaOuterClassname($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(8)
   $core.bool hasJavaOuterClassname() => $_has(1);
+  @$pb.TagNumber(8)
   void clearJavaOuterClassname() => clearField(8);
 
+  @$pb.TagNumber(9)
   FileOptions_OptimizeMode get optimizeFor => $_getN(2);
+  @$pb.TagNumber(9)
   set optimizeFor(FileOptions_OptimizeMode v) {
     setField(9, v);
   }
 
+  @$pb.TagNumber(9)
   $core.bool hasOptimizeFor() => $_has(2);
+  @$pb.TagNumber(9)
   void clearOptimizeFor() => clearField(9);
 
+  @$pb.TagNumber(10)
   $core.bool get javaMultipleFiles => $_getBF(3);
+  @$pb.TagNumber(10)
   set javaMultipleFiles($core.bool v) {
     $_setBool(3, v);
   }
 
+  @$pb.TagNumber(10)
   $core.bool hasJavaMultipleFiles() => $_has(3);
+  @$pb.TagNumber(10)
   void clearJavaMultipleFiles() => clearField(10);
 
+  @$pb.TagNumber(11)
   $core.String get goPackage => $_getSZ(4);
+  @$pb.TagNumber(11)
   set goPackage($core.String v) {
     $_setString(4, v);
   }
 
+  @$pb.TagNumber(11)
   $core.bool hasGoPackage() => $_has(4);
+  @$pb.TagNumber(11)
   void clearGoPackage() => clearField(11);
 
+  @$pb.TagNumber(16)
   $core.bool get ccGenericServices => $_getBF(5);
+  @$pb.TagNumber(16)
   set ccGenericServices($core.bool v) {
     $_setBool(5, v);
   }
 
+  @$pb.TagNumber(16)
   $core.bool hasCcGenericServices() => $_has(5);
+  @$pb.TagNumber(16)
   void clearCcGenericServices() => clearField(16);
 
+  @$pb.TagNumber(17)
   $core.bool get javaGenericServices => $_getBF(6);
+  @$pb.TagNumber(17)
   set javaGenericServices($core.bool v) {
     $_setBool(6, v);
   }
 
+  @$pb.TagNumber(17)
   $core.bool hasJavaGenericServices() => $_has(6);
+  @$pb.TagNumber(17)
   void clearJavaGenericServices() => clearField(17);
 
+  @$pb.TagNumber(18)
   $core.bool get pyGenericServices => $_getBF(7);
+  @$pb.TagNumber(18)
   set pyGenericServices($core.bool v) {
     $_setBool(7, v);
   }
 
+  @$pb.TagNumber(18)
   $core.bool hasPyGenericServices() => $_has(7);
+  @$pb.TagNumber(18)
   void clearPyGenericServices() => clearField(18);
 
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(20)
   $core.bool get javaGenerateEqualsAndHash => $_getBF(8);
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(20)
   set javaGenerateEqualsAndHash($core.bool v) {
     $_setBool(8, v);
   }
 
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(20)
   $core.bool hasJavaGenerateEqualsAndHash() => $_has(8);
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(20)
   void clearJavaGenerateEqualsAndHash() => clearField(20);
 
+  @$pb.TagNumber(23)
   $core.bool get deprecated => $_getBF(9);
+  @$pb.TagNumber(23)
   set deprecated($core.bool v) {
     $_setBool(9, v);
   }
 
+  @$pb.TagNumber(23)
   $core.bool hasDeprecated() => $_has(9);
+  @$pb.TagNumber(23)
   void clearDeprecated() => clearField(23);
 
+  @$pb.TagNumber(27)
   $core.bool get javaStringCheckUtf8 => $_getBF(10);
+  @$pb.TagNumber(27)
   set javaStringCheckUtf8($core.bool v) {
     $_setBool(10, v);
   }
 
+  @$pb.TagNumber(27)
   $core.bool hasJavaStringCheckUtf8() => $_has(10);
+  @$pb.TagNumber(27)
   void clearJavaStringCheckUtf8() => clearField(27);
 
+  @$pb.TagNumber(31)
   $core.bool get ccEnableArenas => $_getBF(11);
+  @$pb.TagNumber(31)
   set ccEnableArenas($core.bool v) {
     $_setBool(11, v);
   }
 
+  @$pb.TagNumber(31)
   $core.bool hasCcEnableArenas() => $_has(11);
+  @$pb.TagNumber(31)
   void clearCcEnableArenas() => clearField(31);
 
+  @$pb.TagNumber(36)
   $core.String get objcClassPrefix => $_getSZ(12);
+  @$pb.TagNumber(36)
   set objcClassPrefix($core.String v) {
     $_setString(12, v);
   }
 
+  @$pb.TagNumber(36)
   $core.bool hasObjcClassPrefix() => $_has(12);
+  @$pb.TagNumber(36)
   void clearObjcClassPrefix() => clearField(36);
 
+  @$pb.TagNumber(37)
   $core.String get csharpNamespace => $_getSZ(13);
+  @$pb.TagNumber(37)
   set csharpNamespace($core.String v) {
     $_setString(13, v);
   }
 
+  @$pb.TagNumber(37)
   $core.bool hasCsharpNamespace() => $_has(13);
+  @$pb.TagNumber(37)
   void clearCsharpNamespace() => clearField(37);
 
+  @$pb.TagNumber(39)
   $core.String get swiftPrefix => $_getSZ(14);
+  @$pb.TagNumber(39)
   set swiftPrefix($core.String v) {
     $_setString(14, v);
   }
 
+  @$pb.TagNumber(39)
   $core.bool hasSwiftPrefix() => $_has(14);
+  @$pb.TagNumber(39)
   void clearSwiftPrefix() => clearField(39);
 
+  @$pb.TagNumber(40)
   $core.String get phpClassPrefix => $_getSZ(15);
+  @$pb.TagNumber(40)
   set phpClassPrefix($core.String v) {
     $_setString(15, v);
   }
 
+  @$pb.TagNumber(40)
   $core.bool hasPhpClassPrefix() => $_has(15);
+  @$pb.TagNumber(40)
   void clearPhpClassPrefix() => clearField(40);
 
+  @$pb.TagNumber(41)
   $core.String get phpNamespace => $_getSZ(16);
+  @$pb.TagNumber(41)
   set phpNamespace($core.String v) {
     $_setString(16, v);
   }
 
+  @$pb.TagNumber(41)
   $core.bool hasPhpNamespace() => $_has(16);
+  @$pb.TagNumber(41)
   void clearPhpNamespace() => clearField(41);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(17);
 }
 
@@ -968,38 +1217,55 @@
       $pb.GeneratedMessage.$_defaultFor<MessageOptions>(create);
   static MessageOptions _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.bool get messageSetWireFormat => $_getBF(0);
+  @$pb.TagNumber(1)
   set messageSetWireFormat($core.bool v) {
     $_setBool(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasMessageSetWireFormat() => $_has(0);
+  @$pb.TagNumber(1)
   void clearMessageSetWireFormat() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.bool get noStandardDescriptorAccessor => $_getBF(1);
+  @$pb.TagNumber(2)
   set noStandardDescriptorAccessor($core.bool v) {
     $_setBool(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasNoStandardDescriptorAccessor() => $_has(1);
+  @$pb.TagNumber(2)
   void clearNoStandardDescriptorAccessor() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.bool get deprecated => $_getBF(2);
+  @$pb.TagNumber(3)
   set deprecated($core.bool v) {
     $_setBool(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasDeprecated() => $_has(2);
+  @$pb.TagNumber(3)
   void clearDeprecated() => clearField(3);
 
+  @$pb.TagNumber(7)
   $core.bool get mapEntry => $_getBF(3);
+  @$pb.TagNumber(7)
   set mapEntry($core.bool v) {
     $_setBool(3, v);
   }
 
+  @$pb.TagNumber(7)
   $core.bool hasMapEntry() => $_has(3);
+  @$pb.TagNumber(7)
   void clearMapEntry() => clearField(7);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(4);
 }
 
@@ -1045,54 +1311,79 @@
       $pb.GeneratedMessage.$_defaultFor<FieldOptions>(create);
   static FieldOptions _defaultInstance;
 
+  @$pb.TagNumber(1)
   FieldOptions_CType get ctype => $_getN(0);
+  @$pb.TagNumber(1)
   set ctype(FieldOptions_CType v) {
     setField(1, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasCtype() => $_has(0);
+  @$pb.TagNumber(1)
   void clearCtype() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.bool get packed => $_getBF(1);
+  @$pb.TagNumber(2)
   set packed($core.bool v) {
     $_setBool(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasPacked() => $_has(1);
+  @$pb.TagNumber(2)
   void clearPacked() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.bool get deprecated => $_getBF(2);
+  @$pb.TagNumber(3)
   set deprecated($core.bool v) {
     $_setBool(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasDeprecated() => $_has(2);
+  @$pb.TagNumber(3)
   void clearDeprecated() => clearField(3);
 
+  @$pb.TagNumber(5)
   $core.bool get lazy => $_getBF(3);
+  @$pb.TagNumber(5)
   set lazy($core.bool v) {
     $_setBool(3, v);
   }
 
+  @$pb.TagNumber(5)
   $core.bool hasLazy() => $_has(3);
+  @$pb.TagNumber(5)
   void clearLazy() => clearField(5);
 
+  @$pb.TagNumber(6)
   FieldOptions_JSType get jstype => $_getN(4);
+  @$pb.TagNumber(6)
   set jstype(FieldOptions_JSType v) {
     setField(6, v);
   }
 
+  @$pb.TagNumber(6)
   $core.bool hasJstype() => $_has(4);
+  @$pb.TagNumber(6)
   void clearJstype() => clearField(6);
 
+  @$pb.TagNumber(10)
   $core.bool get weak => $_getBF(5);
+  @$pb.TagNumber(10)
   set weak($core.bool v) {
     $_setBool(5, v);
   }
 
+  @$pb.TagNumber(10)
   $core.bool hasWeak() => $_has(5);
+  @$pb.TagNumber(10)
   void clearWeak() => clearField(10);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(6);
 }
 
@@ -1126,6 +1417,7 @@
       $pb.GeneratedMessage.$_defaultFor<OneofOptions>(create);
   static OneofOptions _defaultInstance;
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(0);
 }
 
@@ -1160,22 +1452,31 @@
       $pb.GeneratedMessage.$_defaultFor<EnumOptions>(create);
   static EnumOptions _defaultInstance;
 
+  @$pb.TagNumber(2)
   $core.bool get allowAlias => $_getBF(0);
+  @$pb.TagNumber(2)
   set allowAlias($core.bool v) {
     $_setBool(0, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasAllowAlias() => $_has(0);
+  @$pb.TagNumber(2)
   void clearAllowAlias() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.bool get deprecated => $_getBF(1);
+  @$pb.TagNumber(3)
   set deprecated($core.bool v) {
     $_setBool(1, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasDeprecated() => $_has(1);
+  @$pb.TagNumber(3)
   void clearDeprecated() => clearField(3);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(2);
 }
 
@@ -1210,14 +1511,19 @@
       $pb.GeneratedMessage.$_defaultFor<EnumValueOptions>(create);
   static EnumValueOptions _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.bool get deprecated => $_getBF(0);
+  @$pb.TagNumber(1)
   set deprecated($core.bool v) {
     $_setBool(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasDeprecated() => $_has(0);
+  @$pb.TagNumber(1)
   void clearDeprecated() => clearField(1);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(1);
 }
 
@@ -1252,14 +1558,19 @@
       $pb.GeneratedMessage.$_defaultFor<ServiceOptions>(create);
   static ServiceOptions _defaultInstance;
 
+  @$pb.TagNumber(33)
   $core.bool get deprecated => $_getBF(0);
+  @$pb.TagNumber(33)
   set deprecated($core.bool v) {
     $_setBool(0, v);
   }
 
+  @$pb.TagNumber(33)
   $core.bool hasDeprecated() => $_has(0);
+  @$pb.TagNumber(33)
   void clearDeprecated() => clearField(33);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(1);
 }
 
@@ -1299,22 +1610,31 @@
       $pb.GeneratedMessage.$_defaultFor<MethodOptions>(create);
   static MethodOptions _defaultInstance;
 
+  @$pb.TagNumber(33)
   $core.bool get deprecated => $_getBF(0);
+  @$pb.TagNumber(33)
   set deprecated($core.bool v) {
     $_setBool(0, v);
   }
 
+  @$pb.TagNumber(33)
   $core.bool hasDeprecated() => $_has(0);
+  @$pb.TagNumber(33)
   void clearDeprecated() => clearField(33);
 
+  @$pb.TagNumber(34)
   MethodOptions_IdempotencyLevel get idempotencyLevel => $_getN(1);
+  @$pb.TagNumber(34)
   set idempotencyLevel(MethodOptions_IdempotencyLevel v) {
     setField(34, v);
   }
 
+  @$pb.TagNumber(34)
   $core.bool hasIdempotencyLevel() => $_has(1);
+  @$pb.TagNumber(34)
   void clearIdempotencyLevel() => clearField(34);
 
+  @$pb.TagNumber(999)
   $core.List<UninterpretedOption> get uninterpretedOption => $_getList(2);
 }
 
@@ -1352,20 +1672,28 @@
       $pb.GeneratedMessage.$_defaultFor<UninterpretedOption_NamePart>(create);
   static UninterpretedOption_NamePart _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get namePart => $_getSZ(0);
+  @$pb.TagNumber(1)
   set namePart($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasNamePart() => $_has(0);
+  @$pb.TagNumber(1)
   void clearNamePart() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.bool get isExtension => $_getBF(1);
+  @$pb.TagNumber(2)
   set isExtension($core.bool v) {
     $_setBool(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasIsExtension() => $_has(1);
+  @$pb.TagNumber(2)
   void clearIsExtension() => clearField(2);
 }
 
@@ -1405,54 +1733,79 @@
       $pb.GeneratedMessage.$_defaultFor<UninterpretedOption>(create);
   static UninterpretedOption _defaultInstance;
 
+  @$pb.TagNumber(2)
   $core.List<UninterpretedOption_NamePart> get name => $_getList(0);
 
+  @$pb.TagNumber(3)
   $core.String get identifierValue => $_getSZ(1);
+  @$pb.TagNumber(3)
   set identifierValue($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasIdentifierValue() => $_has(1);
+  @$pb.TagNumber(3)
   void clearIdentifierValue() => clearField(3);
 
+  @$pb.TagNumber(4)
   Int64 get positiveIntValue => $_getI64(2);
+  @$pb.TagNumber(4)
   set positiveIntValue(Int64 v) {
     $_setInt64(2, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasPositiveIntValue() => $_has(2);
+  @$pb.TagNumber(4)
   void clearPositiveIntValue() => clearField(4);
 
+  @$pb.TagNumber(5)
   Int64 get negativeIntValue => $_getI64(3);
+  @$pb.TagNumber(5)
   set negativeIntValue(Int64 v) {
     $_setInt64(3, v);
   }
 
+  @$pb.TagNumber(5)
   $core.bool hasNegativeIntValue() => $_has(3);
+  @$pb.TagNumber(5)
   void clearNegativeIntValue() => clearField(5);
 
+  @$pb.TagNumber(6)
   $core.double get doubleValue => $_getN(4);
+  @$pb.TagNumber(6)
   set doubleValue($core.double v) {
     $_setDouble(4, v);
   }
 
+  @$pb.TagNumber(6)
   $core.bool hasDoubleValue() => $_has(4);
+  @$pb.TagNumber(6)
   void clearDoubleValue() => clearField(6);
 
+  @$pb.TagNumber(7)
   $core.List<$core.int> get stringValue => $_getN(5);
+  @$pb.TagNumber(7)
   set stringValue($core.List<$core.int> v) {
     $_setBytes(5, v);
   }
 
+  @$pb.TagNumber(7)
   $core.bool hasStringValue() => $_has(5);
+  @$pb.TagNumber(7)
   void clearStringValue() => clearField(7);
 
+  @$pb.TagNumber(8)
   $core.String get aggregateValue => $_getSZ(6);
+  @$pb.TagNumber(8)
   set aggregateValue($core.String v) {
     $_setString(6, v);
   }
 
+  @$pb.TagNumber(8)
   $core.bool hasAggregateValue() => $_has(6);
+  @$pb.TagNumber(8)
   void clearAggregateValue() => clearField(8);
 }
 
@@ -1491,26 +1844,37 @@
       $pb.GeneratedMessage.$_defaultFor<SourceCodeInfo_Location>(create);
   static SourceCodeInfo_Location _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<$core.int> get path => $_getList(0);
 
+  @$pb.TagNumber(2)
   $core.List<$core.int> get span => $_getList(1);
 
+  @$pb.TagNumber(3)
   $core.String get leadingComments => $_getSZ(2);
+  @$pb.TagNumber(3)
   set leadingComments($core.String v) {
     $_setString(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasLeadingComments() => $_has(2);
+  @$pb.TagNumber(3)
   void clearLeadingComments() => clearField(3);
 
+  @$pb.TagNumber(4)
   $core.String get trailingComments => $_getSZ(3);
+  @$pb.TagNumber(4)
   set trailingComments($core.String v) {
     $_setString(3, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasTrailingComments() => $_has(3);
+  @$pb.TagNumber(4)
   void clearTrailingComments() => clearField(4);
 
+  @$pb.TagNumber(6)
   $core.List<$core.String> get leadingDetachedComments => $_getList(4);
 }
 
@@ -1544,6 +1908,7 @@
       $pb.GeneratedMessage.$_defaultFor<SourceCodeInfo>(create);
   static SourceCodeInfo _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<SourceCodeInfo_Location> get location => $_getList(0);
 }
 
@@ -1584,30 +1949,43 @@
       $pb.GeneratedMessage.$_defaultFor<GeneratedCodeInfo_Annotation>(create);
   static GeneratedCodeInfo_Annotation _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<$core.int> get path => $_getList(0);
 
+  @$pb.TagNumber(2)
   $core.String get sourceFile => $_getSZ(1);
+  @$pb.TagNumber(2)
   set sourceFile($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasSourceFile() => $_has(1);
+  @$pb.TagNumber(2)
   void clearSourceFile() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.int get begin => $_getIZ(2);
+  @$pb.TagNumber(3)
   set begin($core.int v) {
     $_setSignedInt32(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasBegin() => $_has(2);
+  @$pb.TagNumber(3)
   void clearBegin() => clearField(3);
 
+  @$pb.TagNumber(4)
   $core.int get end => $_getIZ(3);
+  @$pb.TagNumber(4)
   set end($core.int v) {
     $_setSignedInt32(3, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasEnd() => $_has(3);
+  @$pb.TagNumber(4)
   void clearEnd() => clearField(4);
 }
 
@@ -1641,5 +2019,6 @@
       $pb.GeneratedMessage.$_defaultFor<GeneratedCodeInfo>(create);
   static GeneratedCodeInfo _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<GeneratedCodeInfo_Annotation> get annotation => $_getList(0);
 }
diff --git a/protoc_plugin/lib/src/plugin.pb.dart b/protoc_plugin/lib/src/plugin.pb.dart
index 7521c99..1c5ce4e 100644
--- a/protoc_plugin/lib/src/plugin.pb.dart
+++ b/protoc_plugin/lib/src/plugin.pb.dart
@@ -42,36 +42,52 @@
       _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Version>(create);
   static Version _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.int get major => $_getIZ(0);
+  @$pb.TagNumber(1)
   set major($core.int v) {
     $_setSignedInt32(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasMajor() => $_has(0);
+  @$pb.TagNumber(1)
   void clearMajor() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.int get minor => $_getIZ(1);
+  @$pb.TagNumber(2)
   set minor($core.int v) {
     $_setSignedInt32(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasMinor() => $_has(1);
+  @$pb.TagNumber(2)
   void clearMinor() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.int get patch => $_getIZ(2);
+  @$pb.TagNumber(3)
   set patch($core.int v) {
     $_setSignedInt32(2, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasPatch() => $_has(2);
+  @$pb.TagNumber(3)
   void clearPatch() => clearField(3);
 
+  @$pb.TagNumber(4)
   $core.String get suffix => $_getSZ(3);
+  @$pb.TagNumber(4)
   set suffix($core.String v) {
     $_setString(3, v);
   }
 
+  @$pb.TagNumber(4)
   $core.bool hasSuffix() => $_has(3);
+  @$pb.TagNumber(4)
   void clearSuffix() => clearField(4);
 }
 
@@ -108,24 +124,36 @@
       $pb.GeneratedMessage.$_defaultFor<CodeGeneratorRequest>(create);
   static CodeGeneratorRequest _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.List<$core.String> get fileToGenerate => $_getList(0);
 
+  @$pb.TagNumber(2)
   $core.String get parameter => $_getSZ(1);
+  @$pb.TagNumber(2)
   set parameter($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasParameter() => $_has(1);
+  @$pb.TagNumber(2)
   void clearParameter() => clearField(2);
 
+  @$pb.TagNumber(3)
   Version get compilerVersion => $_getN(2);
+  @$pb.TagNumber(3)
   set compilerVersion(Version v) {
     setField(3, v);
   }
 
+  @$pb.TagNumber(3)
   $core.bool hasCompilerVersion() => $_has(2);
+  @$pb.TagNumber(3)
   void clearCompilerVersion() => clearField(3);
+  @$pb.TagNumber(3)
+  Version ensureCompilerVersion() => $_ensure(2);
 
+  @$pb.TagNumber(15)
   $core.List<$0.FileDescriptorProto> get protoFile => $_getList(3);
 }
 
@@ -164,28 +192,40 @@
       $pb.GeneratedMessage.$_defaultFor<CodeGeneratorResponse_File>(create);
   static CodeGeneratorResponse_File _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get name => $_getSZ(0);
+  @$pb.TagNumber(1)
   set name($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasName() => $_has(0);
+  @$pb.TagNumber(1)
   void clearName() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.String get insertionPoint => $_getSZ(1);
+  @$pb.TagNumber(2)
   set insertionPoint($core.String v) {
     $_setString(1, v);
   }
 
+  @$pb.TagNumber(2)
   $core.bool hasInsertionPoint() => $_has(1);
+  @$pb.TagNumber(2)
   void clearInsertionPoint() => clearField(2);
 
+  @$pb.TagNumber(15)
   $core.String get content => $_getSZ(2);
+  @$pb.TagNumber(15)
   set content($core.String v) {
     $_setString(2, v);
   }
 
+  @$pb.TagNumber(15)
   $core.bool hasContent() => $_has(2);
+  @$pb.TagNumber(15)
   void clearContent() => clearField(15);
 }
 
@@ -222,13 +262,18 @@
       $pb.GeneratedMessage.$_defaultFor<CodeGeneratorResponse>(create);
   static CodeGeneratorResponse _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get error => $_getSZ(0);
+  @$pb.TagNumber(1)
   set error($core.String v) {
     $_setString(0, v);
   }
 
+  @$pb.TagNumber(1)
   $core.bool hasError() => $_has(0);
+  @$pb.TagNumber(1)
   void clearError() => clearField(1);
 
+  @$pb.TagNumber(15)
   $core.List<CodeGeneratorResponse_File> get file => $_getList(1);
 }
diff --git a/protoc_plugin/pubspec.yaml b/protoc_plugin/pubspec.yaml
index 2e04d2a..a5d62e5 100644
--- a/protoc_plugin/pubspec.yaml
+++ b/protoc_plugin/pubspec.yaml
@@ -1,5 +1,5 @@
 name: protoc_plugin
-version: 19.0.0-dev
+version: 19.0.0
 author: Dart Team <misc@dartlang.org>
 description: Protoc compiler plugin to generate Dart code
 homepage: https://github.com/dart-lang/protobuf
diff --git a/protoc_plugin/test/goldens/imports.pb b/protoc_plugin/test/goldens/imports.pb
index 00eb417..71c05ef 100644
--- a/protoc_plugin/test/goldens/imports.pb
+++ b/protoc_plugin/test/goldens/imports.pb
@@ -35,22 +35,37 @@
   static M getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<M>(create);
   static M _defaultInstance;
 
+  @$pb.TagNumber(1)
   M get m => $_getN(0);
+  @$pb.TagNumber(1)
   set m(M v) { setField(1, v); }
+  @$pb.TagNumber(1)
   $core.bool hasM() => $_has(0);
+  @$pb.TagNumber(1)
   void clearM() => clearField(1);
+  @$pb.TagNumber(1)
   M ensureM() => $_ensure(0);
 
+  @$pb.TagNumber(2)
   $1.M get m1 => $_getN(1);
+  @$pb.TagNumber(2)
   set m1($1.M v) { setField(2, v); }
+  @$pb.TagNumber(2)
   $core.bool hasM1() => $_has(1);
+  @$pb.TagNumber(2)
   void clearM1() => clearField(2);
+  @$pb.TagNumber(2)
   $1.M ensureM1() => $_ensure(1);
 
+  @$pb.TagNumber(3)
   $2.M get m2 => $_getN(2);
+  @$pb.TagNumber(3)
   set m2($2.M v) { setField(3, v); }
+  @$pb.TagNumber(3)
   $core.bool hasM2() => $_has(2);
+  @$pb.TagNumber(3)
   void clearM2() => clearField(3);
+  @$pb.TagNumber(3)
   $2.M ensureM2() => $_ensure(2);
 }
 
diff --git a/protoc_plugin/test/goldens/messageGenerator b/protoc_plugin/test/goldens/messageGenerator
index 999a909..aecf6a9 100644
--- a/protoc_plugin/test/goldens/messageGenerator
+++ b/protoc_plugin/test/goldens/messageGenerator
@@ -21,28 +21,44 @@
   static PhoneNumber getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PhoneNumber>(create);
   static PhoneNumber _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get number => $_getSZ(0);
+  @$pb.TagNumber(1)
   set number($core.String v) { $_setString(0, v); }
+  @$pb.TagNumber(1)
   $core.bool hasNumber() => $_has(0);
+  @$pb.TagNumber(1)
   void clearNumber() => clearField(1);
 
+  @$pb.TagNumber(2)
   PhoneNumber_PhoneType get type => $_getN(1);
+  @$pb.TagNumber(2)
   set type(PhoneNumber_PhoneType v) { setField(2, v); }
+  @$pb.TagNumber(2)
   $core.bool hasType() => $_has(1);
+  @$pb.TagNumber(2)
   void clearType() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.String get name => $_getS(2, '\$');
+  @$pb.TagNumber(3)
   set name($core.String v) { $_setString(2, v); }
+  @$pb.TagNumber(3)
   $core.bool hasName() => $_has(2);
+  @$pb.TagNumber(3)
   void clearName() => clearField(3);
 
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(4)
   $core.String get deprecatedField => $_getSZ(3);
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(4)
   set deprecatedField($core.String v) { $_setString(3, v); }
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(4)
   $core.bool hasDeprecatedField() => $_has(3);
   @$core.Deprecated('This field is deprecated.')
+  @$pb.TagNumber(4)
   void clearDeprecatedField() => clearField(4);
 }
 
diff --git a/protoc_plugin/test/goldens/messageGenerator.meta b/protoc_plugin/test/goldens/messageGenerator.meta
index 246b543..2e309eb 100644
--- a/protoc_plugin/test/goldens/messageGenerator.meta
+++ b/protoc_plugin/test/goldens/messageGenerator.meta
@@ -18,8 +18,8 @@
   path: 2
   path: 1
   sourceFile: 
-  begin: 1472
-  end: 1478
+  begin: 1492
+  end: 1498
 }
 annotation: {
   path: 4
@@ -27,8 +27,8 @@
   path: 2
   path: 1
   sourceFile: 
-  begin: 1500
-  end: 1506
+  begin: 1540
+  end: 1546
 }
 annotation: {
   path: 4
@@ -36,8 +36,8 @@
   path: 2
   path: 1
   sourceFile: 
-  begin: 1559
-  end: 1568
+  begin: 1619
+  end: 1628
 }
 annotation: {
   path: 4
@@ -45,8 +45,8 @@
   path: 2
   path: 1
   sourceFile: 
-  begin: 1591
-  end: 1602
+  begin: 1671
+  end: 1682
 }
 annotation: {
   path: 4
@@ -54,8 +54,8 @@
   path: 2
   path: 0
   sourceFile: 
-  begin: 1652
-  end: 1656
+  begin: 1752
+  end: 1756
 }
 annotation: {
   path: 4
@@ -63,8 +63,8 @@
   path: 2
   path: 0
   sourceFile: 
-  begin: 1677
-  end: 1681
+  begin: 1797
+  end: 1801
 }
 annotation: {
   path: 4
@@ -72,8 +72,8 @@
   path: 2
   path: 0
   sourceFile: 
-  begin: 1740
-  end: 1747
+  begin: 1880
+  end: 1887
 }
 annotation: {
   path: 4
@@ -81,8 +81,8 @@
   path: 2
   path: 0
   sourceFile: 
-  begin: 1770
-  end: 1779
+  begin: 1930
+  end: 1939
 }
 annotation: {
   path: 4
@@ -90,8 +90,8 @@
   path: 2
   path: 2
   sourceFile: 
-  begin: 1820
-  end: 1824
+  begin: 2000
+  end: 2004
 }
 annotation: {
   path: 4
@@ -99,8 +99,8 @@
   path: 2
   path: 2
   sourceFile: 
-  begin: 1851
-  end: 1855
+  begin: 2051
+  end: 2055
 }
 annotation: {
   path: 4
@@ -108,8 +108,8 @@
   path: 2
   path: 2
   sourceFile: 
-  begin: 1908
-  end: 1915
+  begin: 2128
+  end: 2135
 }
 annotation: {
   path: 4
@@ -117,8 +117,8 @@
   path: 2
   path: 2
   sourceFile: 
-  begin: 1938
-  end: 1947
+  begin: 2178
+  end: 2187
 }
 annotation: {
   path: 4
@@ -126,8 +126,8 @@
   path: 2
   path: 3
   sourceFile: 
-  begin: 2037
-  end: 2052
+  begin: 2297
+  end: 2312
 }
 annotation: {
   path: 4
@@ -135,8 +135,8 @@
   path: 2
   path: 3
   sourceFile: 
-  begin: 2123
-  end: 2138
+  begin: 2403
+  end: 2418
 }
 annotation: {
   path: 4
@@ -144,8 +144,8 @@
   path: 2
   path: 3
   sourceFile: 
-  begin: 2240
-  end: 2258
+  begin: 2540
+  end: 2558
 }
 annotation: {
   path: 4
@@ -153,6 +153,6 @@
   path: 2
   path: 3
   sourceFile: 
-  begin: 2330
-  end: 2350
+  begin: 2650
+  end: 2670
 }
diff --git a/protoc_plugin/test/goldens/oneMessage.pb b/protoc_plugin/test/goldens/oneMessage.pb
index 8f4c7de..31afbd6 100644
--- a/protoc_plugin/test/goldens/oneMessage.pb
+++ b/protoc_plugin/test/goldens/oneMessage.pb
@@ -31,19 +31,31 @@
   static PhoneNumber getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PhoneNumber>(create);
   static PhoneNumber _defaultInstance;
 
+  @$pb.TagNumber(1)
   $core.String get number => $_getSZ(0);
+  @$pb.TagNumber(1)
   set number($core.String v) { $_setString(0, v); }
+  @$pb.TagNumber(1)
   $core.bool hasNumber() => $_has(0);
+  @$pb.TagNumber(1)
   void clearNumber() => clearField(1);
 
+  @$pb.TagNumber(2)
   $core.int get type => $_getIZ(1);
+  @$pb.TagNumber(2)
   set type($core.int v) { $_setSignedInt32(1, v); }
+  @$pb.TagNumber(2)
   $core.bool hasType() => $_has(1);
+  @$pb.TagNumber(2)
   void clearType() => clearField(2);
 
+  @$pb.TagNumber(3)
   $core.String get name => $_getS(2, '\$');
+  @$pb.TagNumber(3)
   set name($core.String v) { $_setString(2, v); }
+  @$pb.TagNumber(3)
   $core.bool hasName() => $_has(2);
+  @$pb.TagNumber(3)
   void clearName() => clearField(3);
 }
 
diff --git a/protoc_plugin/test/goldens/oneMessage.pb.meta b/protoc_plugin/test/goldens/oneMessage.pb.meta
index aae73d2..15c9bb5 100644
--- a/protoc_plugin/test/goldens/oneMessage.pb.meta
+++ b/protoc_plugin/test/goldens/oneMessage.pb.meta
@@ -18,8 +18,8 @@
   path: 2
   path: 0
   sourceFile: test
-  begin: 1593
-  end: 1599
+  begin: 1613
+  end: 1619
 }
 annotation: {
   path: 4
@@ -27,8 +27,8 @@
   path: 2
   path: 0
   sourceFile: test
-  begin: 1621
-  end: 1627
+  begin: 1661
+  end: 1667
 }
 annotation: {
   path: 4
@@ -36,8 +36,8 @@
   path: 2
   path: 0
   sourceFile: test
-  begin: 1680
-  end: 1689
+  begin: 1740
+  end: 1749
 }
 annotation: {
   path: 4
@@ -45,8 +45,8 @@
   path: 2
   path: 0
   sourceFile: test
-  begin: 1712
-  end: 1723
+  begin: 1792
+  end: 1803
 }
 annotation: {
   path: 4
@@ -54,8 +54,8 @@
   path: 2
   path: 1
   sourceFile: test
-  begin: 1761
-  end: 1765
+  begin: 1861
+  end: 1865
 }
 annotation: {
   path: 4
@@ -63,8 +63,8 @@
   path: 2
   path: 1
   sourceFile: test
-  begin: 1787
-  end: 1791
+  begin: 1907
+  end: 1911
 }
 annotation: {
   path: 4
@@ -72,8 +72,8 @@
   path: 2
   path: 1
   sourceFile: test
-  begin: 1846
-  end: 1853
+  begin: 1986
+  end: 1993
 }
 annotation: {
   path: 4
@@ -81,8 +81,8 @@
   path: 2
   path: 1
   sourceFile: test
-  begin: 1876
-  end: 1885
+  begin: 2036
+  end: 2045
 }
 annotation: {
   path: 4
@@ -90,8 +90,8 @@
   path: 2
   path: 2
   sourceFile: test
-  begin: 1926
-  end: 1930
+  begin: 2106
+  end: 2110
 }
 annotation: {
   path: 4
@@ -99,8 +99,8 @@
   path: 2
   path: 2
   sourceFile: test
-  begin: 1957
-  end: 1961
+  begin: 2157
+  end: 2161
 }
 annotation: {
   path: 4
@@ -108,8 +108,8 @@
   path: 2
   path: 2
   sourceFile: test
-  begin: 2014
-  end: 2021
+  begin: 2234
+  end: 2241
 }
 annotation: {
   path: 4
@@ -117,6 +117,6 @@
   path: 2
   path: 2
   sourceFile: test
-  begin: 2044
-  end: 2053
+  begin: 2284
+  end: 2293
 }
