Designing Immutable Classes - Immutable Objects | OneNoughtOne