docs: def _map_shapes_and_ancestors(self, topoTypeA, topoTypeB, topologicalEntity):
          '''
          using the same method
          @param topoTypeA:
          @param topoTypeB:
          @param topologicalEntity:
          '''
          topo_set = set()
          _map = TopTools_IndexedDataMapOfShapeListOfShape()
          topexp_MapShapesAndAncestors(self.myShape, topoTypeA, topoTypeB, _map)
          results = _map.FindFromKey(topologicalEntity)
          if results.IsEmpty():
              yield None
  
          topology_iterator = TopTools_ListIteratorOfListOfShape(results)
          while topology_iterator.More():
  
              topo_entity = self.topoFactory[topoTypeB](topology_iterator.Value())
  
              # return the entity if not in set
              # to assure we're not returning entities several times
              if not topo_entity in topo_set:
                  if self.ignore_orientation:
                      unique = True
                      for i in topo_set:
                          if i.IsSame(topo_entity):
                              unique = False
                              break
                      if unique:
                          yield topo_entity
                  else:
                      yield topo_entity
  
              topo_set.add(topo_entity)
              topology_iterator.Next()