code: def setup_keypoints(self, record_component):
      self.adapter._compose_kwargs[
          "keypoint_params"
      ] = A.KeypointParams(
          format="xy",
          remove_invisible=False,
          label_fields=["keypoints_labels"],
      )
  
      # not compatible with some transforms
      flat_tfms_list_ = _flatten_tfms(self.adapter.tfms_list)
      if (
          get_transform(flat_tfms_list_, "RandomSizedBBoxSafeCrop")
          is not None
      ):
          raise RuntimeError(
              "RandomSizedBBoxSafeCrop is not supported for keypoints"
          )
  
      self._kpts = record_component.keypoints
      self._kpts_xy = [xy for o in self._kpts for xy in o.xy]
      self._kpts_labels = [
          label for o in self._kpts for label in o.metadata.labels
      ]
      self._kpts_visible = [
          visible for o in self._kpts for visible in o.visible
      ]
      assert (
          len(self._kpts_xy)
          == len(self._kpts_labels)
          == len(self._kpts_visible)
      )
  
      self.adapter._albu_in["keypoints"] = self._kpts_xy
      self.adapter._albu_in["keypoints_labels"] = self._kpts_labels
  
      self.adapter._collect_ops.append(CollectOp(self.collect))
  
imports: import albumentations
  from itertools import chain
  from icevision.imports import *
  from icevision.utils import *
  from icevision.core import *
  from icevision.tfms.transform import *
  from icevision.tfms.albumentations.albumentations_helpers import get_size_without_padding, get_transform
label_desc: Use image node_id 1 for calling the AlbumentationsKeypointsComponent obj's underlying member method code with example usage: obj.setup_keypoints(record_component) without return types