(* Test: twisted, mutually recursive types *) MODULE Main; TYPE (* T1 == T2 == T3 == T4 == U4 *) T1 = REF T1; T2 = REF REF T2; T3 = REF REF REF T3; T4 = REF U4; U4 = REF T4; TYPE (* R1 == R2 *) R1 = RECORD i: INTEGER; j: T3; k: X2 END; R2 = RECORD i: INTEGER; j: T4; k: X1 END; TYPE (* X1 == X2 *) X1 = REF R1; X2 = REF R2; PROCEDURE P (VAR x: X1) = BEGIN END P; VAR x2: X2; BEGIN P (x2); END Main.