I prefer making constructors package private since we have the static factory methods, which are more intuitive to use than the constructors.