code: def create_symbol(self, type_, **kwargs):
          
          unique_name = kwargs.get('unique_name')
          if not unique_name:
              unique_name = kwargs.get('display_name')
              kwargs['unique_name'] = unique_name
  
          filename = kwargs.get('filename')
          if filename:
              filename = os.path.abspath(filename)
              kwargs['filename'] = os.path.abspath(filename)
  
          if unique_name in self.__symbols:
              warn('symbol-redefined', "%s(unique_name=%s, filename=%s, project=%s)"
                   " has already been defined: %s" % (type_.__name__, unique_name, filename,
                                                      kwargs.get('project_name'),
                                                      self.get_symbol(unique_name)))
              return None
  
          aliases = kwargs.pop('aliases', [])
          for alias in aliases:
              self.create_symbol(ProxySymbol,
                                 unique_name=alias,
                                 target=unique_name)
  
          symbol = type_()
          debug('Created symbol with unique name %s' % unique_name,
                'symbols')
  
          for key, value in list(kwargs.items()):
              setattr(symbol, key, value)
  
          self.__symbols[unique_name] = symbol
          for alias in aliases:
              self.__symbols[alias] = symbol
          self.__aliases[unique_name] = aliases
  
          return symbol
docs: Banana banana