code: def apply(self, record):
      # setup
      self._compose_kwargs = {}
      self._keep_mask = None
      self._albu_in = {}
      self._collect_ops = []
      record.setup_transform(tfm=self)
  
      # TODO: composing every time
      tfms = self.create_tfms()
      # apply transform
      self._albu_out = tfms(**self._albu_in)
  
      # store additional info (might be used by components on `collect`)
      height, width, *_ = self._albu_out["image"].shape
      height, width = get_size_without_padding(
          self.tfms_list,
          ImgSize(width=width, height=height),
          height,
          width,
      )
      self._size_no_padding = ImgSize(width=width, height=height)
  
      # collect results
      for collect_op in sorted(
          self._collect_ops, key=lambda x: x.order
      ):
          collect_op.fn(record)
  
      return record
  
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 3 for calling the Adapter obj's underlying member method code with example usage: obj.apply(record) and returns: record