anchor.diff:              
         // Return null for close section.
         case TagType.closeSection:
  +      case TagType.comment:
           node = null;
           break;
   
  
positive.code:   //final List<List<String>> arguments;
  }
  
  // Note comments and change delimiter tags are parsed out before they reach
  // this stag.
  class TagType {
    const TagType(this.name);
    final String name;
  
negative.code:   static const TagType tripleMustache = const TagType('tripleMustache');
    static const TagType unescapedVariable = const TagType('unescapedVariable');
    static const TagType partial = const TagType('partial');
    static const TagType comment = const TagType('comment');
  }
  
  const _tagTypeMap = const {
          '#': TagType.openSection,
          '^': TagType.openInverseSection,
          '/': TagType.closeSection,
          '&': TagType.unescapedVariable,
          '>': TagType.partial,
          '!': TagType.comment};
  
  TagType tagTypeFromString(String s) { 
    var type = _tagTypeMap[s];
    if (type == null) throw 'boom!'; //TODO unreachable.
    return type;
  }
  
  class Parser {
    
  