/// <summary>
 /// Writes all specials up to the start position of the node.
 /// </summary>
 public void AcceptNodeStart(INode node)
 {
     if (node is AttributedNode) {
         currentAttributedNode = node as AttributedNode;
         if (currentAttributedNode.Attributes.Count == 0) {
             AcceptPoint(node.StartLocation);
             currentAttributedNode = null;
         }
     } else {
         AcceptPoint(node.StartLocation);
     }
 }
 /// <summary>
 /// Writes all specials up to the end position of the node.
 /// </summary>
 public void AcceptNodeEnd(INode node)
 {
     visitor.ForceWriteInPreviousLine = true;
     AcceptPoint(node.EndLocation);
     visitor.ForceWriteInPreviousLine = false;
     if (currentAttributedNode != null) {
         if (node == currentAttributedNode.Attributes[currentAttributedNode.Attributes.Count - 1]) {
             AcceptPoint(currentAttributedNode.StartLocation);
             currentAttributedNode = null;
         }
     }
 }