anchor.diff:    Message get message => translated;
   
     toString() => id.toString();
  +
  +  operator ==(x) => x is TranslatedMessage && x.id == id;
  +
  +  get hashCode => id.hashCode;
   }
   
   /// We can't use a hyphen in a Dart library name, so convert the locale
  
positive.code:         .escapeAndValidateString(Intl.canonicalizedLocale(basicLocale));
      output.write(prologue(locale));
      // Exclude messages with no translation and translations with no matching
      // original message (e.g. if we're using some messages from a larger catalog)
      var usableTranslations = translations
          .where((each) => each.originalMessages != null && each.message != null)
          .toList();
  
negative.code:     for (var translation in usableTranslations) {
        // Some messages we generate as methods in this class. Simpler ones
        // we inline in the map from names to messages.
        var messagesThatNeedMethods = translation.originalMessages
            .where((each) => _hasArguments(each))
            .toSet()
            .toList();
        for (var original in messagesThatNeedMethods) {
          output
            ..write("  ")
  