anchor.diff:      if (decl is ClassDeclaration) {
         for (var meta in decl.metadata) {
           String annotationName = meta.name.name;
  -
           evalArg(String argumentName) {
             var expr = _findNamedArgument(meta.arguments, argumentName);
             var result = expr == null ? null : _eval(expr);
  
positive.code:   throw new ArgumentError("Unsupported literal type: ${expr.runtimeType} ($expr)");
  }
  
  String _assetIdToUri(AssetId id) => 'package:${id.package}/${id.path}';
  
  Expression _findNamedArgument(ArgumentList argumentList, String name) {
    for (var arg in argumentList.arguments) {
      if (arg is AssignmentExpression
          && arg.leftHandSide is Identifier) {
        if (arg.leftHandSide.name == name) {
          return arg.rightHandSide;
        }
      }
    }
    return null;
  
negative.code:             var template = evalArg('template');
              if (template != null) {
                List styleUrls = evalArg('styleUrls') ?? [evalArg('cssUrl')];
                // stderr.writeln('\ncssUrl = $cssUrl, styleUrls = $styleUrls');
                if (styleUrls.contains(cssUrl)) {
                    templates.add(template);
                }
  