code: def add_item(self, item):
          
          if not(isinstance(item.name, basestring) and isinstance(item.description, basestring)):
              raise TypeError("Name and description should be strings, are of type {} and {}"
                              .format(type(item.name), type(item.description)))
          if not(isinstance(item.flag_type, FlagType)):
              raise TypeError("Flag type should be of type FlagType, is of {}".format(type(item.flag_type)))
  
          if item.name not in self._flags:
              if item.default is not None:
                  if item.default is not False:
                      item.description = item.description + " (default: %(default)s)"
                  self._flags[item.name] = item
              else:
                  self._flags[item.name] = item
docs: Add single command line flag
  
          Arguments:
              name (:obj:`str`): Name of flag used in command line
              flag_type (:py:class:`snap_plugin.v1.plugin.FlagType`):
                  Indication if flag should store value or is simple bool flag
              description (:obj:`str`): Flag description used in command line
              default (:obj:`object`, optional): Optional default value for flag
  
          Raises:
              TypeError: Provided wrong arguments or arguments of wrong types, method will raise TypeError