Three hooks reverted, and in every case asymmetric visibility was the whole answer.
// what I wrote in 2024
public array $lines {
get => $this->lines;
}
private array $lines = [];
// what it should have been
public private(set) array $lines = [];
A get hook that returns a backing property unchanged is asymmetric visibility with extra syntax and a function call, which the benchmark confirms — the hook costs about what a method call costs and the visibility modifier is free. The three cases were all written in the same afternoon by somebody reaching for the new feature.