code: def _conversion_checks(item, keys, box_config, check_only=False,
                         pre_check=False):
      
      if box_config['box_duplicates'] != 'ignore':
          if pre_check:
              keys = list(keys) + [item]
  
          key_list = [(k,
                       _safe_attr(k, camel_killer=box_config['camel_killer_box'],
                                  replacement_char=box_config['box_safe_prefix']
                                  )) for k in keys]
          if len(key_list) > len(set(x[1] for x in key_list)):
              seen = set()
              dups = set()
              for x in key_list:
                  if x[1] in seen:
                      dups.add("{0}({1})".format(x[0], x[1]))
                  seen.add(x[1])
              if box_config['box_duplicates'].startswith("warn"):
                  warnings.warn('Duplicate conversion attributes exist: '
                                '{0}'.format(dups))
              else:
                  raise BoxError('Duplicate conversion attributes exist: '
                                 '{0}'.format(dups))
      if check_only:
          return
      # This way will be slower for warnings, as it will have double work
      # But faster for the default 'ignore'
      for k in keys:
          if item == _safe_attr(k, camel_killer=box_config['camel_killer_box'],
                                replacement_char=box_config['box_safe_prefix']):
              return k
docs: Internal use for checking if a duplicate safe attribute already exists
  
      :param item: Item to see if a dup exists
      :param keys: Keys to check against
      :param box_config: Easier to pass in than ask for specfic items
      :param check_only: Don't bother doing the conversion work
      :param pre_check: Need to add the item to the list of keys to check
      :return: the original unmodified key, if exists and not check_only