code: def _get_dest(*args, **kwargs):  # pragma: no cover
      
      prefix_chars = kwargs.get('prefix_chars', '-')
      # determine short and long option strings
      option_strings = []
      long_option_strings = []
  
      for option_string in args:
          # strings starting with two prefix characters are long options
          option_strings.append(option_string)
          if option_string[0] in prefix_chars:
              if len(option_string) > 1:
                  if option_string[1] in prefix_chars:
                      long_option_strings.append(option_string)
  
      # infer destination, '--foo-bar' -> 'foo_bar' and '-x' -> 'x'
      dest = kwargs.get('dest', None)
      if dest is None:
          if long_option_strings:
              dest_option_string = long_option_strings[0]
          else:
              dest_option_string = option_strings[0]
          dest = dest_option_string.lstrip(prefix_chars)
          if not dest:
              msg = _('dest= is required for options like %r')
              raise ValueError(msg % option_string)
          dest = dest.replace('-', '_')
  
      # return the updated dest name
      return dest
docs: Duplicate argument names processing logic from argparse.
  
      argparse stores the variable in the namespace using the provided dest name,
      the first long option string, or the first short option string