anchor.diff:    /// isn't assignable.
     ///
     /// For example, `<div #foo>` given `@ContentChild('foo') TemplateRef foo`.
  -  static const MATCHED_LET_BINDING_HAS_WRONG_TYPE = const AngularWarningCode(
  +  static const MATCHED_LET_BINDING_HAS_WRONG_TYPE = AngularWarningCode(
         'MATCHED_LET_BINDING_HAS_WRONG_TYPE',
         'Marking this with #{0} here expects the element to be of type {1}, (but'
             ' is of type {2}) because an enclosing element marks {0} as a content'
  
positive.code: /// corrected.
  class AngularWarningCode extends ErrorCode {
    /// An error for when a directive does not define a "selector".
    static const ARGUMENT_SELECTOR_MISSING = const AngularWarningCode(
        'ARGUMENT_SELECTOR_MISSING', 'Argument "selector" missing');
  
    /// An error for when the provided selector cannot be parsed.
    static const CANNOT_PARSE_SELECTOR = const AngularWarningCode(
        'CANNOT_PARSE_SELECTOR', 'Cannot parse the given selector ({0})');
  
    /// An error for when a template points to a missing html file.
    static const REFERENCED_HTML_FILE_DOESNT_EXIST = const AngularWarningCode(
        'REFERENCED_HTML_FILE_DOESNT_EXIST',
        'The referenced HTML file doesn\'t exist');
  
    /// An error for when a @Component has both a template and a templateUrl
    /// defined at once.
    static const TEMPLATE_URL_AND_TEMPLATE_DEFINED = const AngularWarningCode(
        'TEMPLATE_URL_AND_TEMPLATE_DEFINED',
        'Cannot define both template and templateUrl. Remove one');
  
    /// An error for when a @Component does not have a template or a templateUrl.
    static const NO_TEMPLATE_URL_OR_TEMPLATE_DEFINED = const AngularWarningCode(
        'NO_TEMPLATE_URL_OR_TEMPLATE_DEFINED',
        'Either a template or templateUrl is required');
  
    /// An error for when an identifier was expected, but not found.
    static const EXPECTED_IDENTIFIER =
        const AngularWarningCode('EXPECTED_IDENTIFIER', 'Expected identifier');
  
    /// An error for when a hash was unexpected in template.
    static const UNEXPECTED_HASH_IN_TEMPLATE = const AngularWarningCode(
        'UNEXPECTED_HASH_IN_TEMPLATE', "Did you mean 'let' instead?");
  
    /// An error for when the value of an expression is not a string.
    static const STRING_VALUE_EXPECTED = const AngularWarningCode(
        'STRING_VALUE_EXPECTED', 'A string value expected');
  
    /// An error for when the value of an expression is not a type literal.
    static const TYPE_LITERAL_EXPECTED = const AngularWarningCode(
        'TYPE_LITERAL_EXPECTED', 'A type literal expected');
  
    /// An error for when the value of an expression is not a directive.
    static const TYPE_IS_NOT_A_DIRECTIVE = const AngularWarningCode(
        'TYPE_IS_NOT_A_DIRECTIVE',
        'The type "{0}" is included in the directives list, but is not a'
            ' directive');
  
    /// An error for when a non-@Directive function was used as one.
    static const FUNCTION_IS_NOT_A_DIRECTIVE = const AngularWarningCode(
        'FUNCTION_IS_NOT_A_DIRECTIVE',
        'The function "{0}" is included in the directives list, but is not a'
            ' functional directive');
  
    /// An error for when a type which is not a Pipe is used as one.
    static const TYPE_IS_NOT_A_PIPE = const AngularWarningCode(
        'TYPE_IS_NOT_A_PIPE',
        'The type "{0}" is included in the pipes list, but is not a pipe');
  
    /// An error for when a tag name cannot be resolved.
    static const UNRESOLVED_TAG =
        const AngularWarningCode('UNRESOLVED_TAG', 'Unresolved tag "{0}"');
  
    /// An error for when an embedded expression is not terminated.
    static const UNTERMINATED_MUSTACHE = const AngularWarningCode(
        'UNTERMINATED_MUSTACHE', 'Unterminated mustache');
  
    /// An error for when a mustache ending was found, with no opening.
    static const UNOPENED_MUSTACHE = const AngularWarningCode(
        'UNOPENED_MUSTACHE', 'Mustache terminator with no opening');
  
    /// An error for when a nonexist input was bound.
    static const NONEXIST_INPUT_BOUND = const AngularWarningCode(
        'NONEXIST_INPUT_BOUND',
        'The bound input {0} does not exist on any directives or on the element');
  
    /// An error for when a nonexist output was bound.
    static const NONEXIST_OUTPUT_BOUND = const AngularWarningCode(
        'NONEXIST_OUTPUT_BOUND',
        'The bound output {0} does not exist on any directives or on the'
            ' element');
  
    /// An error for when a binding doesn't include a value.
    static const EMPTY_BINDING = const AngularWarningCode(
        'EMPTY_BINDING', 'The binding {0} does not have a value specified');
  
    /// An error for when a nonexist output was bound in a two-way binding.
    ///
    /// The nonexist bound output is implicit, so give its own error.
    static const NONEXIST_TWO_WAY_OUTPUT_BOUND = const AngularWarningCode(
        'NONEXIST_TWO_WAY_OUTPUT_BOUND',
        'The two-way binding {0} requires a bindable output of name {1}');
  
    /// An error for when the output event in a two-way binding doesn't match the
    /// input.
    static const TWO_WAY_BINDING_OUTPUT_TYPE_ERROR = const AngularWarningCode(
        'TWO_WAY_BINDING_OUTPUT_TYPE_ERROR',
        'Output event in two-way binding (of type {0}) is not assignable to'
            ' component input (of type {1})');
  
    /// An error for when an input was bound with a incorrectly typed expression.
    static const INPUT_BINDING_TYPE_ERROR = const AngularWarningCode(
        'INPUT_BINDING_TYPE_ERROR',
        'Attribute value expression (of type {0}) is not assignable to component'
            ' input (of type {1})');
  
    /// An error for when an `[attr.foo.if]` binding was bound to an expression
    /// that was not of type bool.
    static const ATTR_IF_BINDING_TYPE_ERROR = const AngularWarningCode(
        'ATTR_IF_BINDING_TYPE_ERROR',
        'Attribute value expression (of type {0}) must be of type bool');
  
    /// An error for when an `[attr.foo.if]` binding was used, but no `[attr.foo]`
    /// binding simultaneously occured.
    static const UNMATCHED_ATTR_IF_BINDING = const AngularWarningCode(
        'UNMATCHED_ATTR_IF_BINDING',
        'attr-if binding for attr {0} does not have a corresponding'
            ' [attr.{0}] binding for it to affect');
  
negative.code:   ///
    /// Bindings must be one of: a dart identifer, `[class.classname]`,
    /// `[attr.attrname]`, `[style.property]`, or `[style.property.unit]`.
    static const INVALID_BINDING_NAME = AngularWarningCode(
        'INVALID_BINDING_NAME',
        'The binding {} is not a valid dart identifer, attribute, style, or class'
            ' binding');
  
    /// An error for when `ngIf` or `ngFor` were used without a template.
    static const STRUCTURAL_DIRECTIVES_REQUIRE_TEMPLATE = AngularWarningCode(
        'STRUCTURAL_DIRECTIVES_REQUIRE_TEMPLATE',
        'Structural directive {0} requires a template. Did you mean'
            ' *{0}="..." or template="{0} ..." or <template {0} ...>?');
  
    /// An error for when `x` is not an exported name in `#y="x"`.
    static const NO_DIRECTIVE_EXPORTED_BY_SPECIFIED_NAME = AngularWarningCode(
        'NO_DIRECTIVE_EXPORTED_BY_SPECIFIED_NAME',
        'No directives matching this element are exported by the name {0}');
  
    /// An error for when an export is ambiguous.
    ///
    /// This occurs in in `<div dir1 dir2 #y="x">`. `x` is then ambigious when
    /// both directives dir1 and dir2 have same `exportAs` name "x".
    static const DIRECTIVE_EXPORTED_BY_AMBIGIOUS = AngularWarningCode(
        'DIRECTIVE_EXPORTED_BY_AMBIGIOUS',
        "More than one directive's exportAs value matches '{0}'.");
  
    /// An error for when a custom component appears to require a star.
    static const AngularWarningCode CUSTOM_DIRECTIVE_MAY_REQUIRE_TEMPLATE =
        AngularWarningCode(
            'CUSTOM_DIRECTIVE_MAY_REQUIRE_TEMPLATE',
            'The directive {0} accepts a TemplateRef in its constructor, so it'
                ' may require a *-style-attr to work correctly.');
  
    /// An error for when a template or star-attr doesn't match any directives.
    static const AngularWarningCode TEMPLATE_ATTR_NOT_USED = AngularWarningCode(
        'TEMPLATE_ATTR_NOT_USED',
        'This template attr does not match any directives that use the'
            ' resulting hidden template. Check that all directives are being'
            ' imported and used correctly.');
  
    /// An error for when an output-binding is not an [ExpressionStatement].
    static const OUTPUT_STATEMENT_REQUIRES_EXPRESSION_STATEMENT =
        AngularWarningCode('OUTPUT_STATEMENT_REQUIRES_EXPRESSION_STATEMENT',
            "Syntax Error: unexpected {0}");
  
    /// An error for when a dart expression in a template uses unsupported dart
  