pojo immutable class with factory method access to private constructor