docs: def all_synsets(pos=None):
      """Return all the synsets which have the provided pos.
  
      Notes
      -----
      Returns thousands or tens of thousands of synsets - first time will take significant time.
      Useful for initializing synsets as each returned synset is also stored in a global dictionary for fast retrieval the next time.
  
      Parameters
      ----------
      pos : str
        Part-of-speech of the sought synsets. Sensible alternatives are wn.ADJ, wn.ADV, wn.VERB, wn.NOUN and `*`.
        If pos == `*`, all the synsets are retrieved and initialized for fast retrieval the next time.
        
      Returns
      -------
      list of Synsets
        Lists the Synsets which have `pos` as part-of-speech.
        Empty list, if `pos` not in [wn.ADJ, wn.ADV, wn.VERB, wn.NOUN, `*`].
  
      """
      def _get_unique_synset_idxes(pos):
          idxes = []
  
          with codecs.open(_LIT_POS_FILE,'rb', 'utf-8') as fin:
              if pos == None:
                  for line in fin:
                    split_line = line.strip().split(':')
                    idxes.extend([int(x) for x in split_line[2].split()])
              else:
                  for line in fin:
                      split_line = line.strip().split(':')
                      if split_line[1] == pos:
                          idxes.extend([int(x) for x in split_line[2].split()])
          idxes = list(set(idxes))
          idxes.sort()
          return idxes
  
      if pos in LOADED_POS:
          return [SYNSETS_DICT[idx] for lemma in LEM_POS_2_SS_IDX for idx in LEM_POS_2_SS_IDX[lemma][pos]]
      else:
          synset_idxes = _get_unique_synset_idxes(pos)
  
          if len(synset_idxes) == 0:
              return []
  
          stored_synsets = [SYNSETS_DICT[synset_idxes[i]] for i in range(len(synset_idxes)) if synset_idxes[i] in SYNSETS_DICT]
          unstored_synset_idxes = [synset_idxes[i] for i in range(len(synset_idxes)) if synset_idxes[i] not in SYNSETS_DICT]
          
          synset_offsets = _get_synset_offsets(unstored_synset_idxes)
          synsets = _get_synsets(synset_offsets)
  
          for synset in synsets:
              for variant in synset.get_variants():
                  LEM_POS_2_SS_IDX[variant.literal][synset.pos].append(synset.id)
  
          LOADED_POS.add(pos)
  
          return stored_synsets + synsets