code: def _get_completions_for_match(self, match, complete_event):
          
          for match_variable in match.end_nodes():
              varname = match_variable.varname
              start = match_variable.start
  
              completer = self.completers.get(varname)
  
              if completer:
                  text = match_variable.value
  
                  # Unwrap text.
                  unwrapped_text = self.compiled_grammar.unescape(varname, text)
  
                  # Create a document, for the completions API (text/cursor_position)
                  document = Document(unwrapped_text, len(unwrapped_text))
  
                  # Call completer
                  for completion in completer.get_completions(document, complete_event):
                      new_text = unwrapped_text[:len(text) + completion.start_position] + completion.text
  
                      # Wrap again.
                      yield Completion(
                          text=self.compiled_grammar.escape(varname, new_text),
                          start_position=start - len(match.string),
                          display=completion.display,
                          display_meta=completion.display_meta)
docs: Yield all the possible completions for this input string.
          (The completer assumes that the cursor position was at the end of the
          input string.)