public function summarizeNodes( $nodes, $locators, $options = array() )
	{
		$result = array();

		if ( ! $options || ! is_array( $options ) ) $options = array();
		if ( ! isset( $options['collectionName'] ) ) $options['collectionName'] = 'children';
		if ( ! isset( $options['labelName'] ) ) $options['labelName'] = 'label';
		if ( ! isset( $options['description'] ) ) $options['description'] = 'true';
		$options['indent'] = isset( $options['indent'] ) ? $options['indent'] + 1 : 0;

		$taxonomy_base_name = $this->getTaxonomyXSD();

		foreach ( $nodes as $nodeKey => $node )
		{
			$index = $node[ $options['labelName'] ];
			if ( isset( $node['arcrole'] ) )	$index .= " ({$node['arcrole']})";
			if ( isset( $node['order'] ) )		$index .= " ({$node['order']})";
			if ( isset( $node['targetRole'] ) ) $index .= " ->({$node['targetRole']})";

			//	$this->log()->info(  isset( $locators[ $node[ $labelName ] ] )
			//		? "Locator found {$locators[ $node[ $labelName ] ]}\n"
			//		: "Locator not found" );

			// $taxonomy = strpos( $locators[ $node[ $options['labelName'] ] ], $taxonomy_base_name ) === 0
			//	? $this
			//	: $this->getTaxonomyForXSD( $locators[ $node[ $options['labelName'] ] ] );

			if ( $options['description'] )
			{
				$description = $this->getTaxonomyDescriptionForIdWithDefaults( $node[ $options['labelName'] ], null, getDefaultLanguage() );
				if ( $description !== false )
				{
					$index .= " '$description'";
				}
			}

			if ( isset( $node['nodeclass'] ) )
				$index .= " ({$node['nodeclass']})";

			if ( isset( $options['callback'] ) )
			{
				if ( $callback_string = call_user_func( array( $this, $options['callback'] ), $node, $taxonomy ) )
				{
					$index .= " [$callback_string]";
				}
			}

			$leaf = "Leaf";

			$result[ $index ] = $leaf;
			if ( ! isset( $node[ $options['collectionName'] ] ) ) continue;
			$result[ $index ] = $this->summarizeNodes( $node[ $options['collectionName'] ], $locators, $options );
		}

		return $result;
	}