def _o_l(self, x: np.ndarray, e_j: np.ndarray | None = None) -> np.ndarray:
        """
        Predict the target model.

        :param x: Samples of input data of shape `(num_samples, num_features)`.
        :param e_j: Additive delta vector of shape `(1, num_features)`.
        :return: Prediction of the target model of shape `(num_samples, num_classes)`.
        """
        if e_j is not None:
            x = x + e_j
        return self.estimator.predict(x).astype(NUMPY_DTYPE)

        Predict the target model.

        :param x: Samples of input data of shape `(num_samples, num_features)`.
        :param e_j: Additive delta vector of shape `(1, num_features)`.
        :return: Prediction of the target model of shape `(num_samples, num_classes)`.
        
art/attacks/extraction/functionally_equivalent_extraction.py