Most solutions to Advent of Code found on the Internet consist of procedural spaghetti code that is not very readable, let alone maintainable.
I therefore took the trouble to implement each task in a truly object-oriented and test-driven way, resulting in a solution made of small, comprehensible objects interacting with each other.
For explanations of my solutions, see my Advent of Code 2015 Solutions article.
This project uses Java 8, the latest Java version that was available in December 2015.