anchor.diff:        if (n is ClassDeclaration) return n;
         return classNode(n.parent);
       }
  +
       var classDeclaration = classNode(node);
       return classDeclaration == null
           ? null
  
positive.code:     }
    }
  
    /// Verify that this looks like a correct
    /// Intl.message/plural/gender/... invocation.
    ///
  
negative.code:       FormalParameterList outerArgs,
        {bool nameAndArgsGenerated: false, bool examplesRequired: false}) {
      // If we have parameters, we must specify args and name.
      NamedExpression args = arguments.firstWhere(
          (each) => each is NamedExpression && each.name.label.name == 'args',
          orElse: () => null);
      var parameterNames =
          outerArgs.parameters.map((x) => x.identifier.name).toList();
      var hasArgs = args != null;
      var hasParameters = !outerArgs.parameters.isEmpty;
      if (!nameAndArgsGenerated && !hasArgs && hasParameters) {
        return "The 'args' argument for Intl.message must be specified";
      }
      if (!checkArgs(args, parameterNames)) {
        return "The 'args' argument must match the message arguments,"
            " e.g. args: ${parameterNames}";
      }
      var messageNameArgument = arguments.firstWhere(
          (eachArg) =>
              eachArg is NamedExpression && eachArg.name.label.name == 'name',
  