module 0x42::M { struct S1 { f: T2 } // T1 is only being used in phantom position struct S2 { a: S1 } // This is ok, because T is used both in phantom and non-phantom position. struct S3 { a: S1 } // Invalid position inside another type struct S4 { a: S2, T2> } }