anchor.diff:          node = new PartialNode(tag.name, tag.start, tag.end, partialIndent);
           break;
               
  -      // Return null for close section.
         case TagType.closeSection:
         case TagType.comment:
  +      case TagType.changeDelimiter:
           node = null;
           break;
   
  
positive.code:       assert(_peek().type == TokenType.lineEnd || _i == 0);
    
        var precedingLineEnd = _readIf(TokenType.lineEnd, eofOk: true);
        var precedingWhitespace = _readIf(TokenType.whitespace, eofOk: true);
            
        Tag tag;
        Node tagNode;
        if (_peek() != null && _peek().type == TokenType.openDelimiter) {
          tag = _readTag();
          tagNode = _createNodeFromTag(tag,
              partialIndent: precedingWhitespace == null
                ? ''
                : precedingWhitespace.value);
          
        } else if (_peek() != null && _peek().type == TokenType.changeDelimiter) {
          // Need to handle standalone lines for change delimiter tags too.
          // The change delimiter token actually represents the entire tag which
          // was already parsed in the scanner.
          var token = _read();
          tag = new Tag(TagType.changeDelimiter, token.value, token.start, token.end);
          tagNode = null;
          _currentDelimiters = token.value;
        }
        
        var followingWhitespace = _readIf(TokenType.whitespace, eofOk: true);
  
        // Need to emit leading whitespace if the last line was not a standalone
  
negative.code:   }
    
    Node _createNodeFromTag(Tag tag, {String partialIndent: ''}) {
      // Handle EOF case.
      if (tag == null) return null;
      
      Node node = null;
      switch (tag.type) {
        
  