code: def generate_with_pattern(self, pattern=None):
          
  
          curlen = utils.get_pattern_length(pattern)
          if curlen > 0:
              str_generator = product(self.charset, repeat=curlen)
              pattern = pattern + self.delimiter
              fstring = utils.pattern_to_fstring(pattern)
              for each in str_generator:
                  yield fstring.format(*each)
docs: Algorithm that creates the list
          based on a given pattern
          The pattern must be like string format patter:
          e.g: a@b will match an 'a' follow by any character follow by a 'b'