docs: def _placement_points_generator(self, skyline, width):
          """Returns a generator for the x coordinates of all the placement
          points on the skyline for a given rectangle.
  
          WARNING: In some cases could be duplicated points, but it is faster
          to compute them twice than to remove them.
          
          Arguments:
              skyline (list): Skyline HSegment list
              width (int, float): Rectangle width
  
          Returns:
              generator
          """ 
          skyline_r = skyline[-1].right
          skyline_l = skyline[0].left
  
          # Placements using skyline segment left point
          ppointsl = (s.left for s in skyline if s.left+width <= skyline_r)
  
          # Placements using skyline segment right point
          ppointsr = (s.right-width for s in skyline if s.right-width >= skyline_l)
  
          # Merge positions
          return heapq.merge(ppointsl, ppointsr)