code: public function add(string $id, $concrete = null, bool $shared = null): DefinitionInterface
      {
          // handle special case when the $id is the interface name and the $concrete the real class.
          // TODO : bout de code à virer si on recherche directement avec le getAlias du definition
          if (is_string($concrete) && class_exists($concrete)) {
              $this->alias($concrete, $id);
          }
  
          $concrete = $concrete ?? $id;
          $shared = $shared ?? $this->defaultToShared;
  
          if (! $concrete instanceof DefinitionInterface) {
              $concrete = new Definition($id, $concrete);
          }
  
          $this->definitions[$id] = $concrete
              ->setAlias($id)
              ->setShared($shared);
  
          return $concrete;
      }
docs: Add an item to the container.
  
  @param string $id
  @param mixed  $concrete
  @param bool   $shared
  
  @return \League\Container\Definition\DefinitionInterface