code: def tosieve(self, indentlevel=0, target=sys.stdout):
          
          self.__print(self.name, indentlevel, nocr=True, target=target)
          if self.has_arguments():
              for arg in self.args_definition:
                  if not arg["name"] in self.arguments:
                      continue
                  target.write(" ")
                  value = self.arguments[arg["name"]]
                  atype = arg["type"]
                  if "tag" in atype:
                      target.write(value)
                      if arg["name"] in self.extra_arguments:
                          value = self.extra_arguments[arg["name"]]
                          atype = arg["extra_arg"]["type"]
                          target.write(" ")
                      else:
                          continue
  
                  if type(value) == list:
                      if self.__get_arg_type(arg["name"]) == ["testlist"]:
                          target.write("(")
                          for t in value:
                              t.tosieve(target=target)
                              if value.index(t) != len(value) - 1:
                                  target.write(", ")
                          target.write(")")
                      else:
                          target.write(
                              "[{}]".format(", ".join(
                                  ['"%s"' % v.strip('"') for v in value])
                              )
                          )
                      continue
                  if isinstance(value, Command):
                      value.tosieve(indentlevel, target=target)
                      continue
  
                  if "string" in atype:
                      target.write(value)
                      if not value.startswith('"') and not value.startswith("["):
                          target.write("\n")
                  else:
                      target.write(value)
  
          if not self.accept_children:
              if self.get_type() != "test":
                  target.write(";\n")
              return
          if self.get_type() != "control":
              return
          target.write(" {\n")
          for ch in self.children:
              ch.tosieve(indentlevel + 4, target=target)
          self.__print("}", indentlevel, target=target)
docs: Generate the sieve syntax corresponding to this command
  
          Recursive method.
  
          :param indentlevel: current indentation level
          :param target: opened file pointer where the content will be printed