BidirGraphWrapper<Graph>, the map values are different for the opposite edges.
     8 	template <typename G, typename K, typename KIt>
 
    16 	template <typename G, typename K, typename KIt>
 
    23 		typedef MapBase<Graph, Key, KIt> Map;
 
    28 		typedef std::vector<Map*> Container; 
 
    36 		MapRegistry(Graph& g) : container(0), graph(&g) {}
 
    39 			typename Container::iterator it;
 
    40 			for (it = container.begin(); it != container.end(); ++it) {
 
    41 				(*it)->destroy(*graph);
 
    47 		MapRegistry(const MapRegistry& ) {}
 
    48 		MapRegistry& operator=(const MapRegistry& ) {}
 
    54 				map.registry->erase(map);
 
    56 			container.push_back(&map);
 
    58 			map.registry_index = container.size()-1;
 
    62 		void erase(Map& map_base) {
 
    63 			map_base.destroy(*graph);
 
    64 			container.back()->registry_index = map_base.registry_index; 
 
    65 			container[map_base.registry_index] = container.back();
 
    67 			map_base.registry = 0;
 
    72 			typename Container::iterator it;
 
    73 			for (it = container.begin(); it != container.end(); ++it) {
 
    78 		void erase(Key& key) {
 
    79 			typename Container::iterator it;
 
    80 			for (it = container.begin(); it != container.end(); ++it) {