How do I deal with serialization unsetting object members?
__sleep() works by returning properties that need to be serialized. A private property is invisible, won't show up in $vars and therefore is also not serialized and just silently dropped.

Either don't use private (it only serialized services, I assume data is not a service), or override __sleep(), call the parent and then add data to the list of properties to be serialized.