I understand the difference between `[HiddenInInspector]` and `[NonSerialized]`, what I'm missing is the use case for `[HiddenInInspector]`: so far every time I've encountered it, it was used by developers who weren't aware of `[NonSerialized]`, that would actually have meant to use that. The result is that they risked to get unexpected values when the variable in question was deserialized.

So, in which case it turns out to be useful to hide something from the inspector but to serialize it? If there is such case, are there any known precautions to take in order to prevent unexpected behaviour?