anchor.diff:    }
   
     @override
  -  ng.TemplateAst visitLetBinding(ast.LetBindingAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitLetBinding(ast.LetBindingAst astNode,
  +          [_ParseContext _]) =>
         new ng.VariableAst(astNode.name, astNode.value, astNode.sourceSpan);
   
     @override
  -  ng.TemplateAst visitReference(ast.ReferenceAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitReference(ast.ReferenceAst astNode, [_ParseContext _]) =>
         new ng.ReferenceAst(
             astNode.variable, null /* value */, astNode.sourceSpan);
   
     @override
  -  ng.TemplateAst visitText(ast.TextAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitText(ast.TextAst astNode, [_ParseContext _]) =>
         new ng.TextAst(astNode.value, 0 /* ngContentIndex */, astNode.sourceSpan);
   
     @override
     ng.TemplateAst visitInterpolation(ast.InterpolationAst astNode,
  -      [ParseContext _]) {
  -    var element = parser
  +      [_ParseContext context]) {
  +    var element = context.templateContext.parser
           .parseInterpolation('{{${astNode.value}}}', _location(astNode), []);
       return new ng.BoundTextAst(
           element, 0 /* ngContentIndex */, astNode.sourceSpan);
     }
   
     @override
  -  ng.TemplateAst visitBanana(ast.BananaAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitBanana(ast.BananaAst astNode, [_ParseContext _]) =>
         throw new UnimplementedError('Don\'t know how to handle bananas');
   
     @override
     ng.TemplateAst visitCloseElement(ast.CloseElementAst astNode,
  -          [ParseContext _]) =>
  +          [_ParseContext _]) =>
         throw new UnimplementedError('Don\'t know how to handle close elements');
   
     @override
  -  ng.TemplateAst visitComment(ast.CommentAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitComment(ast.CommentAst astNode, [_ParseContext _]) =>
         throw new UnimplementedError('Don\'t know how to handle comments.');
   
     @override
  -  ng.TemplateAst visitExpression(ast.ExpressionAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitExpression(ast.ExpressionAst astNode,
  +          [_ParseContext _]) =>
         throw new UnimplementedError('Don\'t know how to handle expressions.');
   
     @override
  -  ng.TemplateAst visitStar(ast.StarAst astNode, [ParseContext _]) =>
  +  ng.TemplateAst visitStar(ast.StarAst astNode, [_ParseContext _]) =>
         throw new UnimplementedError('Don\'t know how to handle stars.');
   
     List<T> _visitAll<T extends ng.TemplateAst>(
  -      List<ast.TemplateAst> astNodes, ParseContext context) {
  +      List<ast.TemplateAst> astNodes, _ParseContext context) {
       final results = <T>[];
       for (final astNode in astNodes) {
         results.add(astNode.accept(this, context) as T);
  
positive.code: 
    @override
    ng.TemplateAst visitEmbeddedTemplate(ast.EmbeddedTemplateAst astNode,
        [ParseContext context]) {
      final embeddedContext = new ParseContext.forTemplate(astNode, context);
      return new ng.EmbeddedTemplateAst(
          _visitAll(astNode.attributes, embeddedContext),
          _visitAll(astNode.events, embeddedContext),
  
negative.code:         parseExpressions: false);
      // TODO(alorenzen): Remove once all tests are passing.
      parsedAst.forEach(print);
      final filter = new _ElementFilter();
      final filteredAst = filter.visitAll(parsedAst);
      final visitor = new _Visitor();
      final context = new _ParseContext.forRoot(new _TemplateContext(
          parser: parser,
          schemaRegistry: schemaRegistry,
          directives: directives));
      return filteredAst
          .map((templateAst) => templateAst.accept(visitor, context))
          .toList();
    }
  }
  
  class _Visitor
      implements ast.TemplateAstVisitor<ng.TemplateAst, _ParseContext> {
    /// A count of how many <ng-content> elements have been seen so far.
    ///
    /// This is necessary so that we can assign a unique index to each one as we
    /// visit it.
    int ngContentIndex = 0;
  
    @override
    ng.TemplateAst visitElement(ast.ElementAst astNode, [_ParseContext context]) {
      final elementContext =
          new _ParseContext.forElement(astNode, context.templateContext);
      return new ng.ElementAst(
          astNode.name,
          _visitAll(astNode.attributes, elementContext),
  