<?php
//  TransportListResolver
	public function getList(Order\Order $order, ?\Closure $transportListResolverModifier = null): array
	{
		$orderItems = $order->getItems($order::ITEM_PRODUCT);

		$transportListResolver = $this->transport->getTransportSelectionResolver()
			->getBaseSelection()
			->setCountry($order->delivery__country_id)
			->setUserGroups($this->user->isLoggedIn() ? $this->user->getRoles() : NULL)
			->setWeight($order->getUniqueWeights())
			->setOnlyForProduct($this->transport->listTransportOnlyForProduct($orderItems))
			->setDistance(isset($order->distance) ? $order->distance : null);

		if ($transportListResolverModifier) {
			$transportListResolverModifier($transportListResolver);
		}

		$list = array_filter(
            $transportListResolver->toArray(),
            fn($transport) => !$transport->transport_carrier->mandatory_type_choice
				|| $this->transportTypeChoice->listTransportChoiceOnlyForProduct($transport->id, $orderItems)
				|| $this->transportTypeChoice->listTransportChoiceOnlyForProduct($transport->id, $orderItems) === null
			);

		return $list;
	}
	


// usage in another class
// we can modify object via closure
$transportList = $this->transportListResolver->getList($order, function (TransportEshopOrderSelectionResolver $transportListResolver) {
			$transportListResolver->setWithChoiceNeeded(true);
	});