public function MoveToNext( $kind = XPathNodeType::All )
	{
		if ( is_null( $this->domNode ) || is_null( $kind ) /* || ! $this->domNode instanceof \DOMElement */ ) return false;

		// Create a list of the valid DOM node types based on the $kind value
		$domNodeTypes = array_keys( array_filter(
			DOMXPathNavigator::$nodeTypeMap,
			function( $nodeType ) use( $kind )
			{
				return $kind == XPathNodeType::All || $nodeType == $kind;
			}
		) );

		// Take a copy of the dom node
		$next = $this->domNode;
		while( ! is_null( $next = $next->nextSibling ) )
		{
			// If the $next node type is valid then store the next node type as the new dom node and return true
			if ( in_array( $next->nodeType, $domNodeTypes ) )
			{
				$this->domNode = $next;
				return true;
			}
		}

		return false;
	}