Per mediawiki 1.20 the way for extensions to attach custom data to the ParserOutput was to declare a dynamic property. Now the mechanism exists, ParserOutput::getExtensionData/setExtensionData to do this properly.
We need to find all the places in the deployed extensions where dynamic property access is still happening, replace usages with a fallback on __get, wait for ParserCache expiration period, drop support for it and trigger an error if an attempt is made to use dynamic properties on ParserOutput.
It seems like a good way of tracking the usages of this is by grepping for PhanUndeclaredProperty suppression.