Heavily commented User.java