<?php

declare(strict_types=1);

namespace Drupal\{{ machine_name }};

use Drupal\Core\DependencyInjection\ContainerBuilder;
{% apply sort_namespaces %}
{% for interface in interfaces %}
use Drupal\Core\DependencyInjection\{{ interface }};
{% endfor %}
{% endapply %}

/**
 * Defines a service provider for the {{ name }} module.
 *
 * @see https://www.drupal.org/node/2026959
 */
final class {{ class }} implements {{ interfaces|join(', ') }} {

{% if provide %}
  /**
   * {@inheritdoc}
   */
  public function register(ContainerBuilder $container): void {
    // @DCG Example of how to register a new service.
    // @code
    //   $container
    //     ->register('{{ machine_name }}.example_subscriber', ExampleSubscriber::class)
    //     ->addTag('event_subscriber')
    //     ->addArgument(new Reference('entity_type.manager'));
    // @endcode
  }

{% endif %}
{% if modify %}
  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container): void {
    // @DCG Example of how to swap out existing service.
    // @code
    //   if ($container->hasDefinition('logger.dblog')) {
    //     $container->getDefinition('logger.dblog')
    //       ->setClass(ExampleLogger::class);
    //   }
    // @endcode
  }

{% endif %}
}