Convertir una cifra a texto en Apex

¿Alguna vez has firmado un contrato y te has fijado en que la cantidad se escribe con números y también en texto? Algo así:
"por el importe de 118,42 €, CIENTO DIECIOCHO EUROS CON DOCE CÉNTIMOS"

Pues me he topado con la necesidad de presentar esa misma información en Salesforce, y tras un rato buscando, no he sido capaz de encontrar ningún código Apex que haga esta conversión.

He encontrado algunas referencias a funciones VB para hacerlo en Microsoft Excel, incluso una referencia propia de Microsoft, pero no me parecían lo más adecuado.

Afortunadamente sí he encontrado un gist de Alfchee, que realiza exactamente esta función pero utilizando javascript.

Total, que me he venido arriba y he decido portarlo a Apex, adecuándolo también a poder utilizar el código con diferentes monedas en función de la necesidad, aunque el Euro es el valor por defecto.

Y como no, también con su clase de test más abajo, que prueba por ejemplo que

116972599.51 € se traduce en

CIENTO DIECISÉIS MILLONES NOVECIENTOS SETENTA Y DOS MIL QUINIENTOS NOVENTA Y NUEVE EUROS CON CINCUENTA Y UN CÉNTIMOS

La clase Apex:

Y su clase de test