public function getCheapestShippingMethod(array $shippingMethods)
    {
        return array_reduce(
            $shippingMethods,
            function ($lowestPriceShippingMethod, ShippingMethod $shippingMethod) {

                $shippingMethodPrice = $shippingMethod->getPrice();
                if (
                    !($lowestPriceShippingMethod instanceof ShippingMethod) ||
                    $shippingMethodPrice
                        ->isLessThan(
                            $this
                                ->currencyConverter
                                ->convertMoney(
                                    $lowestPriceShippingMethod->getPrice(),
                                    $shippingMethodPrice->getCurrency()
                                )
                        )
                ) {
                    return $shippingMethod;
                }

                return $lowestPriceShippingMethod;
            },
            null
        );
    }