def METHOD_NAME(self, *args, **kwargs):
    """
    A method for setting/updating an objects options. (public)
    Usage:
       setOptions(sub0, sub1, ..., key0=value0, key1=value1, ...)
       Updates all suboptions with the provided key value pairs
       setOptions(key0=value0, key1=value1, ...)
       Updates the main options with the provided key,value pairs
    """
    # Sub-options case
    changed = [self.needsUpdate()] # default changed status to the current status
    if len(args) > 0:
        for sub in args:
            if (self._options.hasOption(sub)) and isinstance(self.getOption(sub),
                                                             utils.Options):
                changed.append(self._options[sub].update(**kwargs))
            elif isinstance(sub, utils.Options):
                changed.append(self._options.update(sub))
    # Main options case
    else:
        changed.append(self._options.update(**kwargs))
    changed = any(changed)
    self.setNeedsUpdate(changed)
    return changed