def _attack_single_image(
        self, x: np.ndarray, y: int, confidence: float
    ) -> tuple[AdversarialObject | None, int | None]:
        """
        Attack particular image with given class.

        :param x: Image to attack.
        :param y: Correct class of the image.
        :returns: Pair of adversarial parameters and predicted class.
        """

        return self.optimisation_algorithm(
            image=x,
            estimator=self.estimator,
            iterations=self.iterations,
            actual_class=y,
            actual_class_confidence=confidence,
            adv_object_generator=self._laser_generator,
            image_generator=self._image_generator,
            debug=self._debug,
        )

        Attack particular image with given class.

        :param x: Image to attack.
        :param y: Correct class of the image.
        :returns: Pair of adversarial parameters and predicted class.
        
art/attacks/evasion/laser_attack/laser_attack.py