Je to record, takže ti ho metoda TryGetValue předává hodnotou (vytvoří kopii a ty pak nastavuješ FilteredByGroup jenom té kopii, která se stejně po opuštění bloku zahodí). Třída je předávána odkazem (reference), takže v tom případě pak nastavuješ opravdu ten objekt, který tě zajímá. Dalo by se toho dosáhnout i s recordem, ale TryGetValue by ti musela dávat bud "var TNodeFilter" nebo "[Ref] TNodeFilter" nebo ^TNodeFilter.