I think `Optional`s are fine, but the constructor args aren't `Optional`s and I haven't seen that in the code too often, but might be looking at a skewed sample. I'm just wondering whether a user looking at the Javadoc or an IDE here would know that all of the properties are allowed to be `null`.