--- /dev/null
+# Environment A is created here
+
+# outer references environment A
+def outer() do
+ # Environment B is created here referencing A
+
+ # middle references environment B
+ def middle() do
+ # Environment C is created here referencing B
+
+ # inner references environment C
+ def inner() do
+ # This is never executed
+ 42
+ end
+
+ inner
+ # At this point, environment C falls out of scope
+ # However, environment C is still referenced by inner, which is being returned
+ end
+
+ variable = middle()
+ # Now environment B -> variable -> inner -> C -> B
+
+ 42
+ # Nothing from the cycle is returned and B falls out of scope
+ # All references are lost, but reference counts are still > 0 because of the cycle
+end
+
+print(outer())