diff --git a/CHANGELOG.md b/CHANGELOG.md
index e84701f..3e97f03 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.10.4
+
+* Change the fully qualfiied message name of generated messages to use
+  `BuilderInfo.qualifiedMessageName`.
+  Requires package:protobuf version 0.10.4 or newer.
+
 ## 0.10.3
 
 * Remove runtime `as` check of enum `valueOf` by using correctly typed `Map` of
diff --git a/lib/message_generator.dart b/lib/message_generator.dart
index 6341982..7a82ebb 100644
--- a/lib/message_generator.dart
+++ b/lib/message_generator.dart
@@ -276,7 +276,7 @@
       out.println('static ${classname} _defaultInstance;');
       out.addBlock('static void $checkItem($classname v) {', '}', () {
         out.println('if (v is! $classname)'
-            " $_protobufImportPrefix.checkItemFailed(v, _i.messageName);");
+            " $_protobufImportPrefix.checkItemFailed(v, _i.qualifiedMessageName);");
       });
       generateFieldsAccessorsMutators(out);
       if (fullName == 'google.protobuf.Any') {
@@ -363,7 +363,7 @@
       {String typeUrlPrefix = 'type.googleapis.com'}) {
     return new Any()
       ..value = message.writeToBuffer()
-      ..typeUrl = '\${typeUrlPrefix}/\${message.info_.messageName}';
+      ..typeUrl = '\${typeUrlPrefix}/\${message.info_.qualifiedMessageName}';
   }''');
   }
 
diff --git a/lib/src/dart_options.pb.dart b/lib/src/dart_options.pb.dart
index 055399b..25816e1 100644
--- a/lib/src/dart_options.pb.dart
+++ b/lib/src/dart_options.pb.dart
@@ -33,7 +33,7 @@
   static DartMixin getDefault() => _defaultInstance ??= create()..freeze();
   static DartMixin _defaultInstance;
   static void $checkItem(DartMixin v) {
-    if (v is! DartMixin) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! DartMixin) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -84,7 +84,7 @@
   static Imports getDefault() => _defaultInstance ??= create()..freeze();
   static Imports _defaultInstance;
   static void $checkItem(Imports v) {
-    if (v is! Imports) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! Imports) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<DartMixin> get mixins => $_getList(0);
diff --git a/lib/src/descriptor.pb.dart b/lib/src/descriptor.pb.dart
index 9f317df..925d8ab 100644
--- a/lib/src/descriptor.pb.dart
+++ b/lib/src/descriptor.pb.dart
@@ -38,7 +38,8 @@
       _defaultInstance ??= create()..freeze();
   static FileDescriptorSet _defaultInstance;
   static void $checkItem(FileDescriptorSet v) {
-    if (v is! FileDescriptorSet) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! FileDescriptorSet)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<FileDescriptorProto> get file => $_getList(0);
@@ -85,7 +86,8 @@
       _defaultInstance ??= create()..freeze();
   static FileDescriptorProto _defaultInstance;
   static void $checkItem(FileDescriptorProto v) {
-    if (v is! FileDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! FileDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -174,7 +176,7 @@
   static DescriptorProto_ExtensionRange _defaultInstance;
   static void $checkItem(DescriptorProto_ExtensionRange v) {
     if (v is! DescriptorProto_ExtensionRange)
-      $pb.checkItemFailed(v, _i.messageName);
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   int get start => $_get(0, 0);
@@ -225,7 +227,7 @@
   static DescriptorProto_ReservedRange _defaultInstance;
   static void $checkItem(DescriptorProto_ReservedRange v) {
     if (v is! DescriptorProto_ReservedRange)
-      $pb.checkItemFailed(v, _i.messageName);
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   int get start => $_get(0, 0);
@@ -293,7 +295,7 @@
       _defaultInstance ??= create()..freeze();
   static DescriptorProto _defaultInstance;
   static void $checkItem(DescriptorProto v) {
-    if (v is! DescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! DescriptorProto) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -375,7 +377,8 @@
       _defaultInstance ??= create()..freeze();
   static FieldDescriptorProto _defaultInstance;
   static void $checkItem(FieldDescriptorProto v) {
-    if (v is! FieldDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! FieldDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -485,7 +488,8 @@
       _defaultInstance ??= create()..freeze();
   static OneofDescriptorProto _defaultInstance;
   static void $checkItem(OneofDescriptorProto v) {
-    if (v is! OneofDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! OneofDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -533,7 +537,8 @@
       _defaultInstance ??= create()..freeze();
   static EnumDescriptorProto _defaultInstance;
   static void $checkItem(EnumDescriptorProto v) {
-    if (v is! EnumDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! EnumDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -584,7 +589,8 @@
       _defaultInstance ??= create()..freeze();
   static EnumValueDescriptorProto _defaultInstance;
   static void $checkItem(EnumValueDescriptorProto v) {
-    if (v is! EnumValueDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! EnumValueDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -642,7 +648,8 @@
       _defaultInstance ??= create()..freeze();
   static ServiceDescriptorProto _defaultInstance;
   static void $checkItem(ServiceDescriptorProto v) {
-    if (v is! ServiceDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! ServiceDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -695,7 +702,8 @@
       _defaultInstance ??= create()..freeze();
   static MethodDescriptorProto _defaultInstance;
   static void $checkItem(MethodDescriptorProto v) {
-    if (v is! MethodDescriptorProto) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! MethodDescriptorProto)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -794,7 +802,7 @@
   static FileOptions getDefault() => _defaultInstance ??= create()..freeze();
   static FileOptions _defaultInstance;
   static void $checkItem(FileOptions v) {
-    if (v is! FileOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! FileOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get javaPackage => $_getS(0, '');
@@ -964,7 +972,7 @@
   static MessageOptions getDefault() => _defaultInstance ??= create()..freeze();
   static MessageOptions _defaultInstance;
   static void $checkItem(MessageOptions v) {
-    if (v is! MessageOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! MessageOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   bool get messageSetWireFormat => $_get(0, false);
@@ -1044,7 +1052,7 @@
   static FieldOptions getDefault() => _defaultInstance ??= create()..freeze();
   static FieldOptions _defaultInstance;
   static void $checkItem(FieldOptions v) {
-    if (v is! FieldOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! FieldOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   FieldOptions_CType get ctype => $_getN(0);
@@ -1122,7 +1130,7 @@
   static OneofOptions getDefault() => _defaultInstance ??= create()..freeze();
   static OneofOptions _defaultInstance;
   static void $checkItem(OneofOptions v) {
-    if (v is! OneofOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! OneofOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<UninterpretedOption> get uninterpretedOption => $_getList(0);
@@ -1154,7 +1162,7 @@
   static EnumOptions getDefault() => _defaultInstance ??= create()..freeze();
   static EnumOptions _defaultInstance;
   static void $checkItem(EnumOptions v) {
-    if (v is! EnumOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! EnumOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   bool get allowAlias => $_get(0, false);
@@ -1202,7 +1210,7 @@
       _defaultInstance ??= create()..freeze();
   static EnumValueOptions _defaultInstance;
   static void $checkItem(EnumValueOptions v) {
-    if (v is! EnumValueOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! EnumValueOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   bool get deprecated => $_get(0, false);
@@ -1241,7 +1249,7 @@
   static ServiceOptions getDefault() => _defaultInstance ??= create()..freeze();
   static ServiceOptions _defaultInstance;
   static void $checkItem(ServiceOptions v) {
-    if (v is! ServiceOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! ServiceOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   bool get deprecated => $_get(0, false);
@@ -1287,7 +1295,7 @@
   static MethodOptions getDefault() => _defaultInstance ??= create()..freeze();
   static MethodOptions _defaultInstance;
   static void $checkItem(MethodOptions v) {
-    if (v is! MethodOptions) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! MethodOptions) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   bool get deprecated => $_get(0, false);
@@ -1339,7 +1347,7 @@
   static UninterpretedOption_NamePart _defaultInstance;
   static void $checkItem(UninterpretedOption_NamePart v) {
     if (v is! UninterpretedOption_NamePart)
-      $pb.checkItemFailed(v, _i.messageName);
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get namePart => $_getS(0, '');
@@ -1394,7 +1402,8 @@
       _defaultInstance ??= create()..freeze();
   static UninterpretedOption _defaultInstance;
   static void $checkItem(UninterpretedOption v) {
-    if (v is! UninterpretedOption) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! UninterpretedOption)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<UninterpretedOption_NamePart> get name => $_getList(0);
@@ -1479,7 +1488,8 @@
       _defaultInstance ??= create()..freeze();
   static SourceCodeInfo_Location _defaultInstance;
   static void $checkItem(SourceCodeInfo_Location v) {
-    if (v is! SourceCodeInfo_Location) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! SourceCodeInfo_Location)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<int> get path => $_getList(0);
@@ -1529,7 +1539,7 @@
   static SourceCodeInfo getDefault() => _defaultInstance ??= create()..freeze();
   static SourceCodeInfo _defaultInstance;
   static void $checkItem(SourceCodeInfo v) {
-    if (v is! SourceCodeInfo) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! SourceCodeInfo) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<SourceCodeInfo_Location> get location => $_getList(0);
@@ -1568,7 +1578,7 @@
   static GeneratedCodeInfo_Annotation _defaultInstance;
   static void $checkItem(GeneratedCodeInfo_Annotation v) {
     if (v is! GeneratedCodeInfo_Annotation)
-      $pb.checkItemFailed(v, _i.messageName);
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<int> get path => $_getList(0);
@@ -1627,7 +1637,8 @@
       _defaultInstance ??= create()..freeze();
   static GeneratedCodeInfo _defaultInstance;
   static void $checkItem(GeneratedCodeInfo v) {
-    if (v is! GeneratedCodeInfo) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! GeneratedCodeInfo)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<GeneratedCodeInfo_Annotation> get annotation => $_getList(0);
diff --git a/lib/src/plugin.pb.dart b/lib/src/plugin.pb.dart
index 38a9de0..cb34f63 100644
--- a/lib/src/plugin.pb.dart
+++ b/lib/src/plugin.pb.dart
@@ -36,7 +36,7 @@
   static Version getDefault() => _defaultInstance ??= create()..freeze();
   static Version _defaultInstance;
   static void $checkItem(Version v) {
-    if (v is! Version) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! Version) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   int get major => $_get(0, 0);
@@ -101,7 +101,8 @@
       _defaultInstance ??= create()..freeze();
   static CodeGeneratorRequest _defaultInstance;
   static void $checkItem(CodeGeneratorRequest v) {
-    if (v is! CodeGeneratorRequest) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! CodeGeneratorRequest)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   List<String> get fileToGenerate => $_getList(0);
@@ -157,7 +158,7 @@
   static CodeGeneratorResponse_File _defaultInstance;
   static void $checkItem(CodeGeneratorResponse_File v) {
     if (v is! CodeGeneratorResponse_File)
-      $pb.checkItemFailed(v, _i.messageName);
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get name => $_getS(0, '');
@@ -217,7 +218,8 @@
       _defaultInstance ??= create()..freeze();
   static CodeGeneratorResponse _defaultInstance;
   static void $checkItem(CodeGeneratorResponse v) {
-    if (v is! CodeGeneratorResponse) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! CodeGeneratorResponse)
+      $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get error => $_getS(0, '');
diff --git a/pubspec.yaml b/pubspec.yaml
index 4368aaa..96b568a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: protoc_plugin
-version: 0.10.3
+version: 0.10.4
 author: Dart Team <misc@dartlang.org>
 description: Protoc compiler plugin to generate Dart code
 homepage: https://github.com/dart-lang/dart-protoc-plugin
@@ -10,7 +10,7 @@
 dependencies:
   fixnum: ^0.10.5
   path: ^1.0.0
-  protobuf: ^0.10.3
+  protobuf: ^0.10.4
   dart_style: ^1.0.6
 
 dev_dependencies:
diff --git a/test/goldens/grpc_service.pb b/test/goldens/grpc_service.pb
index d2bab4b..9bf1ff9 100644
--- a/test/goldens/grpc_service.pb
+++ b/test/goldens/grpc_service.pb
@@ -25,7 +25,7 @@
   static Empty getDefault() => _defaultInstance ??= create()..freeze();
   static Empty _defaultInstance;
   static void $checkItem(Empty v) {
-    if (v is! Empty) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! Empty) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 }
 
diff --git a/test/goldens/imports.pb b/test/goldens/imports.pb
index aed53ad..f75afa7 100644
--- a/test/goldens/imports.pb
+++ b/test/goldens/imports.pb
@@ -31,7 +31,7 @@
   static M getDefault() => _defaultInstance ??= create()..freeze();
   static M _defaultInstance;
   static void $checkItem(M v) {
-    if (v is! M) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! M) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   M get m => $_getN(0);
diff --git a/test/goldens/messageGenerator b/test/goldens/messageGenerator
index db6ea74..1c4f0bc 100644
--- a/test/goldens/messageGenerator
+++ b/test/goldens/messageGenerator
@@ -16,7 +16,7 @@
   static PhoneNumber getDefault() => _defaultInstance ??= create()..freeze();
   static PhoneNumber _defaultInstance;
   static void $checkItem(PhoneNumber v) {
-    if (v is! PhoneNumber) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! PhoneNumber) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get number => $_getS(0, '');
diff --git a/test/goldens/oneMessage.pb b/test/goldens/oneMessage.pb
index bd0a423..0278d17 100644
--- a/test/goldens/oneMessage.pb
+++ b/test/goldens/oneMessage.pb
@@ -27,7 +27,7 @@
   static PhoneNumber getDefault() => _defaultInstance ??= create()..freeze();
   static PhoneNumber _defaultInstance;
   static void $checkItem(PhoneNumber v) {
-    if (v is! PhoneNumber) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! PhoneNumber) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 
   String get number => $_getS(0, '');
diff --git a/test/goldens/service.pb b/test/goldens/service.pb
index 5972079..85542d9 100644
--- a/test/goldens/service.pb
+++ b/test/goldens/service.pb
@@ -26,7 +26,7 @@
   static Empty getDefault() => _defaultInstance ??= create()..freeze();
   static Empty _defaultInstance;
   static void $checkItem(Empty v) {
-    if (v is! Empty) $pb.checkItemFailed(v, _i.messageName);
+    if (v is! Empty) $pb.checkItemFailed(v, _i.qualifiedMessageName);
   }
 }
 
