class_docstr: Base class for sliding and expanding window splitter.
code: def _get_train_start(
      start: int,
      window_length: ACCEPTED_WINDOW_LENGTH_TYPES,
      y: pd.Index,
  ) -> int:
      if is_timedelta_or_date_offset(x=window_length):
          train_start = y.get_loc(
              max(y[min(start, len(y) - 1)] - window_length, min(y))
          )
          if start >= len(y):
              train_start += 1
      else:
          train_start = start - window_length
      return train_start
  
imports: from typing import Optional
  import numpy
  import pandas
  from sktime.datatypes._utilities import get_index_for_series
  from sktime.forecasting.base import ForecastingHorizon
  from sktime.split.base import BaseSplitter
  from sktime.split.base._common import ACCEPTED_Y_TYPES, FORECASTING_HORIZON_TYPES, SPLIT_ARRAY_TYPE, SPLIT_GENERATOR_TYPE, _check_fh, _check_inputs_for_compatibility, _get_end
  from sktime.utils.validation import ACCEPTED_WINDOW_LENGTH_TYPES, NON_FLOAT_WINDOW_LENGTH_TYPES, array_is_int, check_window_length, is_int, is_timedelta_or_date_offset
  from sktime.utils.validation.forecasting import check_step_length
label_desc: Use image node_id 7 for calling the BaseWindowSplitter obj's underlying member method code with example usage: obj._get_train_start(start, window_length, y) and returns: train_start