code: def slice_sequence(sequence, length, pad_last=False, pad_val=C.PAD_TOKEN, overlap=0):
      
      if length <= overlap:
          raise ValueError('length needs to be larger than overlap')
  
      if pad_last:
          pad_len = _slice_pad_length(len(sequence), length, overlap)
          sequence = sequence + [pad_val] * pad_len
      num_samples = (len(sequence) - length) // (length - overlap) + 1
  
      return [sequence[i * (length - overlap): ((i + 1) * length - i * overlap)]
              for i in range(num_samples)]
docs: Slice a flat sequence of tokens into sequences tokens, with each
      inner sequence's length equal to the specified `length`, taking into account the requested
      sequence overlap.
  
      Parameters
      ----------
      sequence : list of object
          A flat list of tokens.
      length : int
          The length of each of the samples.
      pad_last : bool, default False
          Whether to pad the last sequence when its length doesn't align. If the last sequence's
          length doesn't align and ``pad_last`` is False, it will be dropped.
      pad_val : object, default
          The padding value to use when the padding of the last sequence is enabled. In general,
          the type of ``pad_val`` should be the same as the tokens.
      overlap : int, default 0
          The extra number of items in current sample that should overlap with the
          next sample.
  
      Returns
      -------
      List of list of tokens, with the length of each inner list equal to `length`.