output cannot be null here
var must be volatile for static lazy init
should use equals
check for null param
remove unnecessary code
when overriding equals there should be a hashCode method too
check for null session