Refactoring finished.
A few things to point out:
- Except for StatementBuilder, nothing is mutable;
- The responsibilities of printing and aggregating are separated;
- No breaking of the Law of Demeter;
- Tests follow given-when-then pattern;