code: def split_strings(subtree: dict) -> List[str]:
      
      strings = subtree["strings"]
      lengths = subtree["lengths"]
      if lengths.shape[0] == 0 and strings.shape[0] == 0:
          return []
      strings = strings[0]
      if subtree.get("str", True):
          strings = strings.decode("utf-8")
      result = [None] * lengths.shape[0]
      offset = 0
      for i, l in enumerate(lengths):
          result[i] = strings[offset:offset + l]
          offset += l
      return result
docs: Produce the list of strings from the dictionary with concatenated chars \
      and lengths. Opposite to :func:`merge_strings()`.
  
      :param subtree: The dict with "strings" and "lengths".
      :return: :class:`list` of :class:`str`-s or :class:`bytes`.