public function MoveToFollowing( $kind, $end = null )
	{
		if	(	is_null( $this->domNode ) ||
				is_null( $kind ) ||
			  	$this->domNode instanceof \DOMAttr  ||
				$this->domNode instanceof \DOMNameSpaceNode
			) return false;

		if ( ! is_null( $end ) && $this->IsSamePosition( $end ) ) return false;

		if ( $this->domNode instanceof \DOMDocument )
		{
			$this->domNode = $this->domNode->documentElement;
			return true;
		}

		/**
		 * @var \DOMElement $node
		 */
		$node = $this->domNode;

		while( true )
		{
			if ( $node->hasChildNodes() )
			{
				$node = $node->firstChild;
			}
			else
			{
				while( true )
				{
					if ( is_null( $node->nextSibling ) )
					{
						if ( $node->parentNode instanceof \DOMDocument ) return false;

						$node = $node->parentNode;
					}
					else
					{
						$node = $node->nextSibling;
						if ( ! is_null( $end ) && $node->isSameNode( $end->getUnderlyingObject() ) ) return false;
						break;
					}
				}
			}

			if ( XPathNodeType::All == $kind || $node->nodeType == $kind ) break;
		}

		$this->domNode = $node;
		return true;
	}