public function reduce(MoneyInterface $source, $toCurrency = null)
    {
        if (null === $toCurrency) {
            $toCurrency = $this->getBaseCurrency();
        }

        $this->checkCurrencies($toCurrency);

        return $source->reduce($this, $toCurrency);
    }