code: def register_optionables(self, optionables):
      
      if not isinstance(optionables, Iterable):
        raise TypeError('The optionables must be an iterable, given {}'.format(optionables))
      optionables = tuple(optionables)
      if not optionables:
        return
  
      invalid_optionables = [s
                             for s in optionables
                             if not isinstance(s, type) or not issubclass(s, Optionable)]
      if invalid_optionables:
        raise TypeError('The following items from the given optionables are not Optionable '
                        'subclasses:\n\t{}'.format('\n\t'.join(str(i) for i in invalid_optionables)))
  
      self._optionables.update(optionables)
docs: Registers the given subsystem types.
  
      :param optionables: The Optionable types to register.
      :type optionables: :class:`collections.Iterable` containing
                         :class:`pants.option.optionable.Optionable` subclasses.