Hello David,
You are hitting here a known limitation (feature?) of our symbolic execution (SE) engine. We can not guarantee (due to parallelism, notably [1]) that the value of the Optional field in x has not changed between two calls to getY().
With cross-file analysis (currently as an experimental phase), we should be able to tell that the method is always returning the same object, and therefore be able to somehow keep the state of the field. Nevertheless, it will still not prevent it to change in case of parallelism. Note that there is no immediate work planned on following state of fields.
Consequently, to me, these issues are not FPs, and your only solution to not raise them is to use an intermediary variable, being the result of "x.getY()". It will also be the guarantee that the Optional is present as well after checking it. I would find it a better solution than disabling the rule, but if you are using this pattern everywhere, it can indeed be costly to fix.
As a side note: you may want to reconsider using Optional as class fields. As far as I can tell, it goes against Java designers recommendations regarding usages of Optionals. You may want to have a look here:
Cheers,
Michael
[1] : Extrapolating if we are, or not, in a parallelized environment is a tricky subject that we don't plan to address for the time being