code: def clause(self, *args, **kwargs):
          
          if args and isinstance(args[0], Clause):
              clause = args[0]
          else:
              clause = Clause(*args, **kwargs)
  
          if not clause.fields:
              clause.fields = self.all_fields
  
          if (clause.wildcard & Query.WILDCARD_LEADING) and (
              clause.term[0] != Query.WILDCARD
          ):
              clause.term = Query.WILDCARD + clause.term
  
          if (clause.wildcard & Query.WILDCARD_TRAILING) and (
              clause.term[-1] != Query.WILDCARD
          ):
              clause.term = clause.term + Query.WILDCARD
  
          self.clauses.append(clause)
          return self
docs: Adds a `lunr.Clause` to this query.
  
          Unless the clause contains the fields to be matched all fields will be
          matched. In addition a default boost of 1 is applied to the clause.
  
          If the first argument is a `lunr.Clause` it will be mutated and added,
          otherwise args and kwargs will be used in the constructor.
  
          Returns:
              lunr.Query: The Query itself.