def METHOD_NAME(self, series: TimeSeries, future_covariates: Optional[TimeSeries] = None):
    super().METHOD_NAME(series, future_covariates)
    self._assert_univariate(series)
    series = self.training_series
    if future_covariates is not None:
        # perform OLS and get in-sample residuals
        linreg = LinearRegressionModel(lags_future_covariates=[0])
        linreg.fit(series, future_covariates=future_covariates)
        fitted_values = linreg.model.predict(
            X=future_covariates.slice_intersect(series).values(copy=False)
        )
        fitted_values_ts = TimeSeries.from_times_and_values(
            times=series.time_index, values=fitted_values
        )
        resids = series - fitted_values_ts
        self._linreg = linreg
        target = resids
    else:
        target = series
    self.model.fit(
        target.values(copy=False).flatten(),
    )
    return self