* ! Reimplement SharedArrayPool because it is internal in .net runtime
* ! Expose PublicArrayPool that maps to our copy of SharedArrayPool
* ! CodeGenerator that remaps System.Buffers.ArrayPool.Shared calls to Sandbox.PublicArrayPool
* ! Don't run ArrayPoolUpgrader in full engine builds
* ! Add tests that verifies ArrayPool.Shared replacements
* ! Remove ArrayPool.Shared from whitelist
* ! Build AST from nodes instead of parsing text
* ! Use Reflection to grab Gen2GcCallback instead of event polling
Avoids unnecessary reparsing and allocations by reusing identical trees, and running generators only on what's been modified, significantly reducing incremental compile times for small changes in large codebases.