docs: def xml(self, indent = ""):
          """This methods renders an XML representation of this parameter, along with
          its selected value, and feedback on validation errors"""
          xml = indent + "<" + self.__class__.__name__
          xml += ' id="'+self.id + '"'
          xml += ' name="'+xmlescape(self.name) + '"'
          xml += ' description="'+xmlescape(self.description) + '"'
          if self.paramflag:
              xml += ' flag="'+self.paramflag + '"'
          if self.multi:
              xml += ' multi="true"'
          for key, value in self.kwargs.items():
              if key != 'choices' and key != 'default' and key != 'flag' and key != 'paramflag':
                  if isinstance(value, bool):
                      xml += ' ' + key + '="' + str(int(value))+ '"'
                  elif isinstance(value, list):
                      xml += ' ' + key + '="'+",".join(value)+ '"'
                  else:
                      xml += ' ' + key + '="'+xmlescape(value)+ '"'
          if self.error:
              xml += ' error="'+self.error + '"'
          xml += ">"
          for key, value in self.choices:
              if self.value == key or (isinstance(self.value ,list) and key in self.value):
                  xml += " <choice id=\""+key+"\" selected=\"1\">" + xmlescape(value) + "</choice>"
              else:
                  xml += " <choice id=\""+key+"\">" + xmlescape(value) + "</choice>"
          xml += "</" + self.__class__.__name__ + ">"
          return xml