code: private function createCommand(
          CommandCollectionInterface $collection,
          $operationName,
          $queryParameters,
          $icon,
          $extraValues = []
      ) {
          $command    = $this->getCommandInstance($collection, $operationName);
          $parameters = $command->getParameters();
          foreach ($queryParameters as $name => $value) {
              if (!isset($parameters[$name])) {
                  $parameters[$name] = $value;
              }
          }
  
          if (!$command->getLabel()) {
              $command->setLabel($operationName . '.0');
              if (isset($extraValues['label'])) {
                  $command->setLabel($extraValues['label']);
              }
          }
  
          if (!$command->getDescription()) {
              $command->setDescription($operationName . '.1');
              if (isset($extraValues['description'])) {
                  $command->setDescription($extraValues['description']);
              }
          }
  
          $extra         = $command->getExtra();
          $extra['icon'] = $icon;
  
          foreach ($extraValues as $name => $value) {
              if (!isset($extra[$name])) {
                  $extra[$name] = $value;
              }
          }
      }
docs: Build a command into the the command collection.
  
  @param CommandCollectionInterface $collection      The command collection.
  @param string                     $operationName   The operation name.
  @param array                      $queryParameters The query parameters for the operation.
  @param string                     $icon            The icon to use in the backend.
  @param array                      $extraValues     The extra values for the command.
  
  @return void