1 # Environment A is created here
3 # outer references environment A
5 # Environment B is created here referencing A
7 # middle references environment B
9 # Environment C is created here referencing B
11 # inner references environment C
13 # This is never executed
18 # At this point, environment C falls out of scope
19 # However, environment C is still referenced by inner, which is being returned
23 # Now environment B -> variable -> inner -> C -> B
26 # Nothing from the cycle is returned and B falls out of scope
27 # All references are lost, but reference counts are still > 0 because of the cycle