anchor.diff:      templateVisitAll(this, ast.hostEvents);
     }
   
  +  @override
     void visitDirectiveProperty(BoundDirectivePropertyAst ast, _) {
       final res = [BoundDirectivePropertyAst, ast.directiveName]
         ..addAll(_humanizeBoundValue(ast.value));
       result.add(_appendContext(ast, res));
     }
   
  +  @override
     void visitProvider(ProviderAst ast, _) {}
   
  +  @override
     void visitI18nText(I18nTextAst ast, _) {
       var res = [I18nTextAst, ast.value.text, ast.value.metadata.description];
       if (ast.value.metadata.meaning != null) {
  
positive.code:     ]);
    }
  
    void visitText(TextAst ast, _) {
      result.add(['#text(${ast.value})', ast.ngContentIndex]);
    }
  
    void visitDirective(DirectiveAst ast, _) {}
  
    void visitDirectiveProperty(BoundDirectivePropertyAst ast, _) {}
  
    void visitProvider(ProviderAst ast, _) {}
  
    void visitI18nText(I18nTextAst ast, _) {}
  }
  
  
negative.code:     templateVisitAll(this, ast.children);
    }
  
    @override
    void visitElement(ElementAst ast, _) {
      var res = [ElementAst, ast.name];
      result.add(_appendContext(ast, res));
  