◆ private A a => new A();
◆ = private A a { get { return new A(); } } 
◆ ≠ private A a { get; } = new A();

なんて呼ぶのかわからないですが C# では
private A a => new A();

というプロパティ定義の短縮記法があります
(アロープロパティとかかな?)

私は↓を短くしたものだと思ってました
private A a { get; } = new A();

が 違いました

正しくはこっちです
private A a { get { return new A(); } }

毎回新しくインスタンスを生成しています
なので初期値を入れるものだと思って プロパティを書き換えても 次に取得した時にリセットされています


この勘違いで地味に苦しみました