Nie potrafię zrozumieć fragmentu kodu. który znajduje się na dole.
(kod pochodzi z https://blog.bigbinary.com/2017/09/12/using-recompose-to-build-higher-order-components.html )

CAŁY KOD

import { branch, renderComponent } from 'recompose';
import CashScreen from 'components/payments/CashScreen';
import PayOnlineScreen from 'components/payments/PayOnlineScreen';
import CardScreen from 'components/payments/CardScreen';

const cashOnDelivery = 'CASH_ON_DELIVERY';
const swipeOnDelivery = 'SWIPE_ON_DELIVERY';

let enhance = branch(
  (props) => (props.paymentType === cashOnDelivery)
  renderComponent(CashScreen),
)

enhance = branch(
  (props) => (props.paymentType === swipeOnDelivery)
  renderComponent(CardScreen),
)(enhance)

const MainScreen = enhance(PayOnlineScreen);

mianowicie pierwsze wywołanie branch powoduje zwrot hoc-a i wpisanie jej w zmienna enhance. Lecz drugie wywołanie 0_0. Co tutaj się dzieje? branch zwraca hoc-a i do niego wrzucam poprzedniego hoc-a?

enhance = branch(
  (props) => (props.paymentType === swipeOnDelivery)
  renderComponent(CardScreen),
)(enhance)

Nic z tego nie rozumiem? pomożesz? co tutaj się dzieje dlaczego, jak żyć?