code: private function getExtendServiceDefinitionFromCallable($decoratedServiceName, $serviceName, $serviceProviderKey, callable $callable, ContainerDefinition $containerDefinition, DumpableInterface $previousDefinition = null): DumpableInterface
      {
          if ($callable instanceof DefinitionInterface) {
              return $this->converter->convert($decoratedServiceName, $callable);
          }
          if (is_array($callable) && is_string($callable[0])) {
              return new FactoryCallDefinition($decoratedServiceName, $callable[0], $callable[1], [$containerDefinition, $previousDefinition]);
          } elseif (is_string($callable) && strpos($callable, '::') !== false) {
              $pos = strpos($callable, '::');
              $className = substr($callable, 0, $pos);
              $methodName = substr($callable, $pos + 2);
  
              return new FactoryCallDefinition($decoratedServiceName, $className, $methodName, [$containerDefinition, $previousDefinition]);
          }
  
          // This is an object or a callback... we need to call the getServices method of the service provider at runtime.
          return new ExtendServiceFromRegistryDefinition($decoratedServiceName, $serviceName, $serviceProviderKey, $previousDefinition);
      }
docs: @param $serviceName
  @param int                            $serviceProviderKey
  @param callable                       $callable
  @param ContainerDefinition            $containerDefinition
  @param CallbackWrapperDefinition|null $previousDefinition
  
  @return DumpableInterface