def poison(
        self, x: np.ndarray, y: np.ndarray | None = None, broadcast=False, **kwargs
    ) -> tuple[np.ndarray, np.ndarray]:
        """
        Calls perturbation function on input x and target labels y

        :param x: An array with the points that initialize attack points.
        :param y: The target labels for the attack.
        :param broadcast: Whether to broadcast single target label
        :return: An tuple holding the `(poisoning_examples, poisoning_labels)`.
        """
        return self.backdoor.poison(x, y, broadcast=broadcast)

        Calls perturbation function on input x and target labels y

        :param x: An array with the points that initialize attack points.
        :param y: The target labels for the attack.
        :param broadcast: Whether to broadcast single target label
        :return: An tuple holding the `(poisoning_examples, poisoning_labels)`.
        
art/attacks/poisoning/adversarial_embedding_attack.py