struct { T1 = Fn(a: A) -> A { return a; }; T2 = Fn(a: b) -> b { return a; }; T3 = Fn(a: c) -> c { return T2(T2(T1(a))); }; } main;