code: def words(content, filter=True, predicate=None):
      
      def accept_word(word):
          """\
          Returns if the `word` is acceptable/useful
          
          `word`
              The word to check.
          """
          return len(word) > 2 \
                  and word.lower() not in stop_words \
                  and not _UNWANTED_WORDS_PATTERN.match(word)
      words = _tokenize(content)
      if filter or predicate:
          if not predicate:
              predicate = accept_word
          return (w for w in words if predicate(w))
      return words
docs: \
      Returns an iterable of words from the provided text.
      
      `content`
          A text.
      `filter`
          Indicates if stop words and garbage like "xxxxxx" should be removed from
          the word list.
      `predicate`
          An alternative word filter. If it is ``None`` "xxxx", "---",
          default stop words, and words which have no min. length of 3 are filtered
          (iff ``filter`` is set to ``True``).
      
      >>> list(words('Hello and goodbye ------ '))
      ['Hello', 'goodbye']
      >>> list(words('Hello, and goodbye ------ Subject xxxxxxxxx XXXXXXXXXXXX here'))
      ['Hello', 'goodbye', 'Subject']
      >>> list(words('Hello, and goodbye.How are you?'))
      ['Hello', 'goodbye']