How to decorate the Factory class?

Hello,

I try for hours to decorates the Factory class without success. Any help will be much appreciate.
I could not find a service for this class in Sylius so I have implement it in my services.

The original class to decorate:

<?php

/*
 * This file is part of the Sylius package.
 *
 * (c) Paweł Jędrzejewski
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

declare(strict_types=1);

namespace Sylius\Component\Resource\Factory;

/**
 * Creates resources based on theirs FQCN.
 */
final class Factory implements FactoryInterface
{
    /** @var string */
    private $className;

    public function __construct(string $className)
    {
        $this->className = $className;
    }

    /**
     * {@inheritdoc}
     */
    public function createNew()
    {
        return new $this->className();
    }
}

And I want to add the createNewsletter()
In my services.xml, I have:

<service id="sylius.component.resource.factory.factory" class="Sylius\Component\Resource\Factory\Factory" public="true">
    <argument>%entourage.model.structure_news_post.class%</argument>
</service>

<service id="entourage.factory.structure_news_post" class="Mobizel\Bundle\EntourageBundle\Factory\StructureNewsPostFactory" decorates="sylius.component.resource.factory.factory" public="false">
    <argument type="service" id="doctrine.orm.entity_manager" />
    <argument type="service" id="request_stack" />
    <argument type="service" id="entourage.factory.structure_news_post.inner" />
</service>

My factory:

class StructureNewsPostFactory implements StructureNewsPostFactoryInterface
{
    /**
     * @var RequestStack
     */
    protected $requestStack;

    /**
     * @var ObjectManager
     */
    protected $manager;

    /**
     * @var Factory
     */
    protected $factory;


    public function __construct (ObjectManager $manager,
                                 RequestStack $requestStack,
                                 Factory $factory
    )
    {
        $this->manager = $manager;
        $this->requestStack = $requestStack;
        $this->factory = $factory;        
    }

    /**
     * {@inheritdoc}
     */
    public function createNew() : StructureNewsPostFactoryInterface
    {
        return $this->factory->createNew();
    }

    public function createWithNewsletter($id) : StructureNewsPostFactoryInterface
    {

        $newsletter = $this->manager->find('EntourageBundle:Newsletter', $id);

        $structureNewsPost = $this->createNew();
        $structureNewsPost->setNewsletter($newsletter);
    }
}

with StructureNewsPostFactoryInterface:
<?php

declare(strict_types=1);

namespace Mobizel\Bundle\EntourageBundle\Factory;

use Sylius\Component\Resource\Factory\FactoryInterface;

interface StructureNewsPostFactoryInterface extends FactoryInterface
{
    public function createWithNewsletter($id);

}

my routing:

entourage_pro_structure_news_create_newsletter:
  path: /create/{id}/newsletter
  methods: [GET, POST]
  defaults:
    _controller: entourage.controller.structure_news_post:createAction
    _sylius:
      factory:
        method: createWithNewsletter
        arguments: [$id]
      permission: true
      template: WebProBundle:Frontend/StructureNewsPost:createNewsletter.html.twig
      form: Mobizel\Bundle\EntourageBundle\Form\StructureNewsPostType

and the last but not the least, my controller:

class StructureNewsPostController extends WebProController
{

    public function createAction(Request $request): Response
    {
        $configuration = $this->requestConfigurationFactory->create($this->metadata, $request);

        $this->isGrantedOr403($configuration, ResourceActions::CREATE);
        $newResource = $this->newResourceFactory->create($configuration, $this->factory);

        $form = $this->resourceFormFactory->create($configuration, $newResource);

        if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
            return parent::createAction($request);
        }

        $this->eventDispatcher->dispatchInitializeEvent(ResourceActions::CREATE, $configuration, $newResource);

        $resources = $this->resourcesCollectionProvider->get($configuration, $this->repository);
        $this->eventDispatcher->dispatchMultiple(ResourceActions::INDEX, $configuration, $resources);

        $view = View::create()
            ->setData([
                'configuration'                  => $configuration,
                'metadata'                       => $this->metadata,
                'resource'                       => $newResource,
                'resources'                      => $resources,
                $this->metadata->getPluralName() => $resources,
                $this->metadata->getName()       => $newResource,
                'form'                           => $form->createView(),
            ])
            ->setTemplate($configuration->getTemplate(ResourceActions::CREATE . '.html'))
        ;

        return $this->viewHandler->handle($configuration, $view);
    }

The error:

Type error: Argument 5 passed to Sylius\Bundle\ResourceBundle\Controller\ResourceController::__construct() must implement interface Sylius\Component\Resource\Factory\FactoryInterface, instance of Mobizel\Bundle\EntourageBundle\Factory\StructureNewsPostFactory given, called in /var/www/var/cache/korian/dev/Container9h9s6tg/getEntourage_Controller_StructureNewsPostService.php on line 23

in sylius_resource.yaml config file add controller configuration

app.foo:
    classes:
        controller: App\Controller\FooController
        model: App\Entity\Foo

and in services.yaml add these lines:

_instanceof:
    Sylius\Bundle\ResourceBundle\Controller\ResourceController:
        autowire: false
        public: true