Index: doc/proposals/modules-gen-hdr/err-vicious/cu1.src.c
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/cu1.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/cu1.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,14 @@
+#import auto cu2
+
+//# @
+struct A {
+    int val;
+};
+
+//# @
+struct B {
+    struct X x;
+};
+
+//# -
+static struct Y y __attribute__((unused));
Index: doc/proposals/modules-gen-hdr/err-vicious/cu2.src.c
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/cu2.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/cu2.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,14 @@
+#import auto cu1
+
+//# @
+struct X {
+    double val;
+};
+
+//# @
+struct Y {
+    struct A a;
+};
+
+//# -
+static struct B b __attribute__((unused));
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.a.h
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.a.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.a.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,5 @@
+#pragma once
+
+struct A {
+    int val;
+};
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.b.h
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.b.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.b.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "cu2.x.h"
+
+struct B {
+    struct X x;
+};
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.src.c
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu1.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,9 @@
+#include "cu1.a.h" // unnecessary (demo not built enough to need self imports)
+#include "cu1.b.h"
+
+#include "cu2.y.h"
+
+static struct Y y __attribute__((unused));
+
+int main() {    
+}
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.src.c
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.src.c	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,6 @@
+#include "cu2.x.h" // unnecessary (demo not built enough to need self imports)
+#include "cu2.y.h"
+
+#include "cu1.b.h"
+
+static struct B b __attribute__((unused));
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.x.h
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.x.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.x.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,5 @@
+#pragma once
+
+struct X {
+    double val;
+};
Index: doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.y.h
===================================================================
--- doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.y.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
+++ doc/proposals/modules-gen-hdr/err-vicious/recourse-classic/cu2.y.h	(revision b28ce93ef6648a426d1fb594f74b51bfeda9976c)
@@ -0,0 +1,7 @@
+#pragma once
+
+#include "cu1.a.h"
+
+struct Y {
+    struct A a;
+};
