docs: def check_attributes(self, opts=None):
          """check for attributes and moves them into the dictionary"""
          if opts is None:
              opts = self
          if 1 < 3:
          # the problem with merge is that ``opts['ftarget'] = new_value``
          # would be overwritten by the old ``opts.ftarget``.
          # The solution here is to empty opts.__dict__ after the merge
              if hasattr(opts, '__dict__'):
                  for key in list(opts.__dict__):
                      if key in self._attributes:
                          continue
                      _print_warning(
                          """
          An option attribute has been merged into the dictionary,
          thereby possibly overwriting the dictionary value, and the
          attribute has been removed. Assign options with
  
              ``opts['%s'] = value``  # dictionary assignment
  
          or use
  
              ``opts.set('%s', value)  # here isinstance(opts, CMAOptions)
  
          instead of
  
              ``opts.%s = value``  # attribute assignment
                          """ % (key, key, key), 'check', 'CMAOptions')
  
                      opts[key] = opts.__dict__[key]  # getattr(opts, key)
                      delattr(opts, key)  # is that cosher?
                      # delattr is necessary to prevent that the attribute
                      # overwrites the dict entry later again
              return opts