public function processNodeByPath( &$nodes, &$paths, $node, $successCallback = false, $failureCallback = false )
	{
		$result = true;
		if ( is_null( $nodes ) ) return;

		foreach ( $paths as $pathKey => $path )
		{
			unset( $currentNodes );
			unset( $currentNode );
			unset( $parentNode );

			$currentNodes =& $nodes;
			$currentPath = "";
			$currentNode = false;
			$parentNode = false;

			$pathsParts = explode( '/', $path );
			for ( $i = 0; $i < count( $pathsParts ); $i++ )
			{
				if ( ! isset( $currentNodes[ $pathsParts[ $i ] ] ) )
				{
					// XBRL_Log::getInstance()->err( "This is bad" );
					unset( $currentNodes );
					$currentNodes = false;
					$parentNode = false;
					break;
				}

				$currentNode =& $currentNodes[ $pathsParts[ $i ] ];

				if ( $pathsParts[ $i ] == $node )
				{
					break;
				}

				$parentNode = $currentNode;

				if ( isset( $currentNode['children'] ) )
				{
					$currentNodes =& $currentNode['children'];
				}

			}

			if ( ! $currentNodes )
			{
				if ( $failureCallback )
				{
					$failureCallback( $path );
				}
				else
				{
					XBRL_Log::getInstance()->warning( "There are no current nodes so something went wrong evaluating the path '$path'" );
				}
				continue;
			}

			if ( ! $successCallback ) continue;
			$successCallback( $currentNode, $path, $parentNode === false ? $parentNode : $parentNode['label'] );
		}

		return $result;
	}