First version with only final members, getters and methods equals(), hashCode(), toString().