Sync changes from internal repo. (#132)

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);
   }
 }