Spores seem like an interesting solution.  The language designer in me has a distaste for it, though :p<p>For case 1 (capture of mutable references), an explicit copy operator might be better (as in, &quot;I want whatever value this variable is bound to, rather than the storage location&quot;) (or even vice versa, where value is the default and there&#x27;s an operator for location).  In a way, spores accomplish this by forcing you to do the copy manually -- but then programmers have to always remember to use the extra syntax, and they need to do it for <i>every</i> captured variable.  I&#x27;m not quite happy with even this solution, and it may be possible to come up with something even better.  Concurrency is always a can o&#x27; worms :)<p>For case 2 (capture of implicit &quot;this&quot;), I&#x27;d argue that if (a) the compiler is smart enough to know that &quot;helper&quot; is implicitly &quot;this.helper&quot; and (b) that &quot;this&quot; will be captured by the closure, then (c) the compiler is also smart enough to create an implicit binding for &quot;helper&quot; and capture that instead.  This would lead to less-surprising behavior, and intentional capture of &quot;this&quot; could still be done via <i>explicit</i> access.  Another option is to, rather than treating &quot;this&quot; as being in an enclosing scope, treat it as though it were an implicit argument to the method (albeit a covariant one).  This avoids capture altogether.