def update_dict(self, d, frame_number=None):
        """Updates this :class:`OpenLABELObject` given the raw label
        dictionary.

        Args:
            d: dict containing the information for this object

        Returns:
            newly parsed frame numbers the object corresponds to, if any
        """
        if frame_number:
            frame_object = self.frame_objects.get(
                frame_number, OpenLABELObject(self.key, is_frame_level=True)
            )
            frame_object.update_dict(d)
            self.frame_objects[frame_number] = frame_object
        else:
            (
                bboxes,
                segmentations,
                points,
                name,
                _type,
                stream,
                other_attrs,
            ) = self._parse_object_dict(d)

            self.shapes["bboxes"].merge_shapes(bboxes)
            self.shapes["segmentations"].merge_shapes(segmentations)
            self.shapes["keypoints"].merge_shapes(points)

            if name and not self.name:
                self.name = name

            if stream and not self.stream:
                self.stream = stream

            self.other_attrs.update(other_attrs)
Updates this :class:`OpenLABELObject` given the raw label
        dictionary.

        Args:
            d: dict containing the information for this object

        Returns:
            newly parsed frame numbers the object corresponds to, if any
        
fiftyone/utils/openlabel.py