/// <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;
				}
			}
		}