indexed by source hash */ private array $sourceHashToAst = []; public function __construct(private Parser $wrappedParser) { } public function parse(string $code, ErrorHandler|null $errorHandler = null): array|null { // note: this code is mathematically buggy by default, as we are using a hash to identify // cache entries. The string length is added to further reduce likeliness (although // already imperceptible) of key collisions. // In the "real world", this code will work just fine. $hash = sprintf('%s:%d', hash('sha256', $code), strlen($code)); if (array_key_exists($hash, $this->sourceHashToAst)) { /** @var Node\Stmt[]|null $ast */ $ast = unserialize($this->sourceHashToAst[$hash]); return $ast; } $ast = $this->wrappedParser->parse($code, $errorHandler); $this->sourceHashToAst[$hash] = serialize($ast); return $ast; } } __halt_compiler();----SIGNATURE:----BJWXmMeV+9ehw6SP3mrIt1t9caFsF3qDftRFv8DU/xq/37jvO9tT3qTSPF7kVuQMb9F6FdvVKyMbT8tTREn0XYviTabApUSfgwos8o6mh4wOw8X437cxx6cU8kp+BWBF1Xg6nnieiQJVs4WmZw66yQaCwo/0uikU3AndKMqw7sHkLSFj6M/wQcS4vfkpS0D7f7fetTiqMgq0KIQZAPiW+ehMF/10DhtT5c5TStOlMprSRdqRVw/I4WMJM+gDD4CENDv+nvwGzP5z2ag8Aoq1klZcwaGDW+rVJWzN2fjuL+nRTxheIn62qtiVdE3XYJTulTDvaXQrGdKGF5XqUDagKGczRqOjVembTP8YAbQiX9f33BQ1q0qQDvYTFTlQXQ8jdzt5MSwoWajjVbZi78KtEy80DKY9cpcvVEVMvdHoJkHmAIqbA4kz2zpUtegFn80q5cV0AHRUEZsoDz7dEz1xqlctd9qPmsJj62YwMm1ZWhjAGTHxRJYFWps0iyUmfO43bm/+mXU2PJ+9C1mkpyQPoAPo8JZaL+nhOZKLrTyPM9eRng04hwHZgfyLnvJq9SlTdg+uZkA8Tumqd2NGu9JpdGq5j7lUga+iEMJ2HinvDzufnuKPfHjRYEnXnDPGkkDeMvZPMEjcPMTyl9jXv2xA5p28cZe7aaC1YHbRAq0ic2k=----ATTACHMENT:----NTE5NzcyNTU0OTc1NzU2NCA3NzI1MjUxNTk2MjcwNzk5IDMzMDgwMjUxOTg4Njk1NjQ=