docs: def _generate_placements(self, width, height):
          """
          Generate a list with 
  
          Arguments:
              skyline (list): SkylineHSegment list
              width (number):
  
          Returns:
              tuple (Rectangle, fitness):
                  Rectangle: Rectangle in valid position
                  left_skyline: Index for the skyline under the rectangle left edge.
                  right_skyline: Index for the skyline under the rectangle right edte.
          """
          skyline = self._skyline
  
          points = collections.deque()
  
          left_index = right_index = 0 # Left and right side skyline index
          support_height = skyline[0].top
          support_index = 0 
      
          placements = self._placement_points_generator(skyline, width)
          for p in placements:
  
              # If Rectangle's right side changed segment, find new support
              if p+width > skyline[right_index].right:
                  for right_index in range(right_index+1, len(skyline)):
                      if skyline[right_index].top >= support_height:
                          support_index = right_index
                          support_height = skyline[right_index].top
                      if p+width <= skyline[right_index].right:
                          break
                  
              # If left side changed segment.
              if p >= skyline[left_index].right:
                  left_index +=1
             
              # Find new support if the previous one was shifted out.
              if support_index < left_index:
                  support_index = left_index
                  support_height = skyline[left_index].top
                  for i in range(left_index, right_index+1):
                      if skyline[i].top >= support_height:
                          support_index = i
                          support_height = skyline[i].top
  
              # Add point if there is enought room at the top
              if support_height+height <= self.height:
                  points.append((Rectangle(p, support_height, width, height),\
                      left_index, right_index))
  
          return points