Faz-me lembrar um intereactor por ser uma unidade de código que faz uma coisa e é altamente testável, e é um conceito bom que surgiu assim do nada. Mas pára aí claro. 

Estás com uma boa percepção, no OBB eu tenho isto. Imutabilidade e métodos puros.
Contudo... é um bom exercício tentarmos fazer uma função que finaliza uma invoice como pura! ;) /cc @paulosilva86