docs: def start(backdate=None):
      """
      Mark the start of timing, overwriting the automatic start data written on
      import, or the automatic start at the beginning of a subdivision.
  
      Notes:
          Backdating: For subdivisions only.  Backdate time must be in the past
          but more recent than the latest stamp in the parent timer.
  
      Args:
          backdate (float, optional): time to use for start instead of current.
  
      Returns:
          float: The current time.
  
      Raises:
          BackdateError: If given backdate time is out of range or used in root timer.
          StartError: If the timer is not in a pristine state (if any stamps or
              subdivisions, must reset instead).
          StoppedError: If the timer is already stopped (must reset instead).
          TypeError: If given backdate value is not type float.
      """
      if f.s.cum:
          raise StartError("Already have stamps, can't start again (must reset).")
      if f.t.subdvsn_awaiting or f.t.par_subdvsn_awaiting:
          raise StartError("Already have subdivisions, can't start again (must reset).")
      if f.t.stopped:
          raise StoppedError("Timer already stopped (must open new or reset).")
      t = timer()
      if backdate is None:
          t_start = t
      else:
          if f.t is f.root:
              raise BackdateError("Cannot backdate start of root timer.")
          if not isinstance(backdate, float):
              raise TypeError("Backdate must be type float.")
          if backdate > t:
              raise BackdateError("Cannot backdate to future time.")
          if backdate < f.tm1.last_t:
              raise BackdateError("Cannot backdate start to time previous to latest stamp in parent timer.")
          t_start = backdate
      f.t.paused = False
      f.t.tmp_total = 0.  # (In case previously paused.)
      f.t.start_t = t_start
      f.t.last_t = t_start
      return t