code: def _get_replacement_words(self, word):
      if len(word) <= 1:
          return []
  
      candidate_words = []
  
      start_idx = 1 if self.skip_first_char else 0
      end_idx = len(word) - (1 + self.skip_last_char)
  
      if start_idx >= end_idx:
          return []
  
      if self.random_one:
          i = random.randrange(start_idx, end_idx + 1)
          candidate_word = (
              word[:i]
              + random.choice(self._get_adjacent(word[i]))
              + word[i + 1 :]
          )
          candidate_words.append(candidate_word)
      else:
          for i in range(start_idx, end_idx + 1):
              for swap_key in self._get_adjacent(word[i]):
                  candidate_word = word[:i] + swap_key + word[i + 1 :]
                  candidate_words.append(candidate_word)
  
      return candidate_words
  
file_path: TextAttack/textattack/transformations/word_swaps/word_swap_qwerty.py
imports: import random
  from .word_swap import WordSwap
label_desc: Use image node_id 3 for calling the WordSwapQWERTY obj's underlying member method code with example usage: obj._get_replacement_words(word) and returns: candidate_words, list, list