diff --git a/protobuf/lib/meta.dart b/protobuf/lib/meta.dart
index 2b249d1..7f43263 100644
--- a/protobuf/lib/meta.dart
+++ b/protobuf/lib/meta.dart
@@ -4,6 +4,7 @@
 
 /// Provides metadata about GeneratedMessage and ProtobufEnum to
 /// dart-protoc-plugin. (Experimental API; subject to change.)
+/// @nodoc
 library protobuf.meta;
 
 // ignore_for_file: constant_identifier_names
diff --git a/protobuf/lib/src/protobuf/field_set.dart b/protobuf/lib/src/protobuf/field_set.dart
index fe5b7e0..0c8b064 100644
--- a/protobuf/lib/src/protobuf/field_set.dart
+++ b/protobuf/lib/src/protobuf/field_set.dart
@@ -91,10 +91,10 @@
   String get _messageName => _meta.qualifiedMessageName;
   bool get _hasRequiredFields => _meta.hasRequiredFields;
 
-  /// The FieldInfo for each non-extension field.
+  /// The [FieldInfo] for each non-extension field.
   Iterable<FieldInfo> get _infos => _meta.fieldInfo.values;
 
-  /// The FieldInfo for each non-extension field in tag order.
+  /// The [FieldInfo] for each non-extension field in tag order.
   Iterable<FieldInfo> get _infosSortedByTag => _meta.sortedByTag;
 
   _ExtensionFieldSet _ensureExtensions() =>
diff --git a/protobuf/lib/src/protobuf/generated_message.dart b/protobuf/lib/src/protobuf/generated_message.dart
index 6239e0e..b6c3527 100644
--- a/protobuf/lib/src/protobuf/generated_message.dart
+++ b/protobuf/lib/src/protobuf/generated_message.dart
@@ -137,7 +137,7 @@
   @override
   int get hashCode => _fieldSet._hashCode;
 
-  /// Returns a String representation of this message.
+  /// Returns a [String] representation of this message.
   ///
   /// This representation is similar to, but not quite, the Protocol Buffer
   /// TextFormat. Each field is printed on its own line. Sub-messages are
@@ -148,7 +148,7 @@
   @override
   String toString() => toDebugString();
 
-  /// Returns a String representation of this message.
+  /// Returns a [String] representation of this message.
   ///
   /// This generates the same output as [toString], but can be used by mixins
   /// to compose debug strings with additional information.
@@ -158,6 +158,11 @@
     return out.toString();
   }
 
+  /// Throws a [StateError] if the message has required fields without a value.
+  ///
+  /// This library does not check in any of the methods that required fields in
+  /// have values. Use this method if you need to check that required fields
+  /// have values.
   void check() {
     if (!isInitialized()) {
       final invalidFields = <String>[];
@@ -167,15 +172,18 @@
     }
   }
 
+  /// Serialize the message as the protobuf binary format.
   Uint8List writeToBuffer() {
     final out = CodedBufferWriter();
     writeToCodedBufferWriter(out);
     return out.toBuffer();
   }
 
+  /// Same as [writeToBuffer], but serializes to the given [CodedBufferWriter].
   void writeToCodedBufferWriter(CodedBufferWriter output) =>
       _writeToCodedBufferWriter(_fieldSet, output);
 
+  /// Same as [mergeFromBuffer], but takes a [CodedBufferReader] input.
   void mergeFromCodedBufferReader(CodedBufferReader input,
       [ExtensionRegistry extensionRegistry = ExtensionRegistry.EMPTY]) {
     final meta = _fieldSet._meta;
