code: def bottom(self, objects: Set[Object]) -> Set[Object]:
          
          objects_per_box = self._separate_objects_by_boxes(objects)
          return_set: Set[Object] = set()
          for _, box_objects in objects_per_box.items():
              max_y_loc = max([obj.y_loc for obj in box_objects])
              return_set.update(set([obj for obj in box_objects if obj.y_loc == max_y_loc]))
          return return_set
docs: Return the bottom most objects(i.e. maximum y_loc). The comparison is done separately for
          each box.