anchor.diff:        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 precedingWhitespace = _readIf(TokenType.whitespace, eofOk: true);          
  +      var indent = precedingWhitespace == null ? '' : precedingWhitespace.value;
  +      var tag = _readTag();
  +      var tagNode = _createNodeFromTag(tag, partialIndent: indent);
         var followingWhitespace = _readIf(TokenType.whitespace, eofOk: true);
   
         // Need to emit leading whitespace if the last line was not a standalone
  
positive.code:   }
    
    Node _createNodeFromTag(Tag tag, {String partialIndent: ''}) {
      Node node = null;
      switch (tag.type) {
        
  
negative.code:         node = new PartialNode(tag.name, tag.start, tag.end, partialIndent);
          break;
              
        case TagType.closeSection:
        case TagType.comment:
        case TagType.changeDelimiter:
          node = null;
          break;
  
  