The "derived" symbols indicate children fields of a larger symbol.
As parents do not have pointers to their children, the garbage collection algorithm the analyzer currently uses adds such symbols into a "postponed" category, and then keeps running through the worklist until the fixed point is reached.
The current patch rectifies that by instead using a helper map which stores pointers from parents to children, so that no fixed point calculation is necessary.
The current patch yields ~5% improvement in running time on sqlite.
Actually, let's assert even more: in the HeapSpaceRegion case, s is always SymbolConjured.
Also maybe let's point directly to populateWorklistFromSymbol() in the comment, otherwise nobody would have an idea what to look for, but if we point to a function then even if the function gets renamed the reader would be able to pick it up from the history.