docs: def extract(self, tokens: List[Token]) -> List[Extraction]:
          """
          Extracts information from a string(TEXT) with the GlossaryExtractor instance
  
          Args:
              token (List[Token]): list of spaCy token to be processed.
  
          Returns:
              List[Extraction]: the list of extraction or the empty list if there are no matches.
  
          """
          results = list()
  
          if len(tokens) > 0:
              if self._case_sensitive:
                  new_tokens = [x.orth_ if isinstance(x, Token) else x for x in tokens]
              else:
                  new_tokens = [x.lower_ if isinstance(x, Token) else x.lower() for x in tokens]
          else:
              return results
  
          try:
              ngrams_iter = self._generate_ngrams_with_context(new_tokens)
              results.extend(map(lambda term: self._wrap_value_with_context(tokens, term[1], term[2]),
                                 filter(lambda term: isinstance(term[0], str),
                                        map(lambda term: (self._glossary.get(term[0]), term[1], term[2]),
                                            map(lambda term: (
                                                self._combine_ngrams(term[0], self._joiner), term[1], term[2]),
                                                ngrams_iter)))))
          except Exception as e:
              raise ExtractorError('GlossaryExtractor: Failed to extract with ' + self.name + '. Catch ' + str(e) + '. ')
          return results