code: def merge_element_data(dest, sources, use_copy=True):
      
  
      if dest is not None:
          ret = dest.copy()
      else:
          ret = {}
  
      if use_copy:
          sources = copy.deepcopy(sources)
  
      # Note that we are not copying notes/data_sources
      for s in sources:
          if 'electron_shells' in s:
              if 'electron_shells' not in ret:
                  ret['electron_shells'] = []
              ret['electron_shells'].extend(s['electron_shells'])
          if 'ecp_potentials' in s:
              if 'ecp_potentials' in ret:
                  raise RuntimeError('Cannot overwrite existing ECP')
              ret['ecp_potentials'] = s['ecp_potentials']
              ret['ecp_electrons'] = s['ecp_electrons']
          if 'references' in s:
              if 'references' not in ret:
                  ret['references'] = []
              for ref in s['references']:
                  if not ref in ret['references']:
                      ret['references'].append(ref)
  
      return ret
docs: Merges the basis set data for an element from multiple sources
      into dest.
  
      The destination is not modified, and a (shallow) copy of dest is returned
      with the data from sources added.
  
      If use_copy is True, then the data merged into dest will be a (deep)
      copy of that found in sources. Otherwise, data may be shared between dest
      and sources