code: def _GetDataStreams(self):
      
      if self._data_streams is None:
        if self._file_system.IsHFS():
          known_data_attribute_types = [
              pytsk3.TSK_FS_ATTR_TYPE_HFS_DEFAULT,
              pytsk3.TSK_FS_ATTR_TYPE_HFS_DATA]
  
        elif self._file_system.IsNTFS():
          known_data_attribute_types = [pytsk3.TSK_FS_ATTR_TYPE_NTFS_DATA]
  
        else:
          known_data_attribute_types = None
  
        self._data_streams = []
  
        tsk_fs_meta_type = getattr(
            self._tsk_file.info.meta, 'type', pytsk3.TSK_FS_META_TYPE_UNDEF)
  
        if not known_data_attribute_types:
          if tsk_fs_meta_type == pytsk3.TSK_FS_META_TYPE_REG:
            data_stream = TSKDataStream(self._file_system, None)
            self._data_streams.append(data_stream)
  
        else:
          for tsk_attribute in self._tsk_file:
            # NTFS allows directories to have data streams.
            if (not self._file_system.IsNTFS() and
                tsk_fs_meta_type != pytsk3.TSK_FS_META_TYPE_REG):
              continue
  
            if getattr(tsk_attribute, 'info', None) is None:
              continue
  
            attribute_type = getattr(tsk_attribute.info, 'type', None)
            if attribute_type in known_data_attribute_types:
              data_stream = TSKDataStream(self._file_system, tsk_attribute)
              self._data_streams.append(data_stream)
  
      return self._data_streams
docs: Retrieves the data streams.
  
      Returns:
        list[TSKDataStream]: data streams.