<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -68,7 +68,12 @@ public class FlowControlBehavior {
                                     wherePlace = Message.getEvaluatedArgument(place, context);
                                 }
 
-                                Object originalValue = realPlace.sendTo(context, wherePlace);
+                                Object originalValue = null;
+                                try {
+                                    originalValue = realPlace.sendTo(context, wherePlace);
+                                } catch(Throwable e) {
+                                    originalValue = null;
+                                }
                             
                                 if(realPlace.getArguments().size() != 0) {
                                     String newName = realPlace.getName() + &quot;=&quot;;
@@ -96,10 +101,24 @@ public class FlowControlBehavior {
                                 if(realPlace.getArguments().size() != 0) {
                                     String newName = realPlace.getName() + &quot;=&quot;;
                                     List&lt;Object&gt; arguments = new ArrayList&lt;Object&gt;(realPlace.getArguments());
-                                    arguments.add(context.runtime.createMessage(Message.wrap(IokeObject.as(value))));
-                                    context.runtime.newMessageFrom(realPlace, newName, arguments).sendTo(context, wherePlace);
+
+                                    if(value == null) {
+                                        if(newName.equals(&quot;cell=&quot;)) {
+                                            context.runtime.removeCellMessage.sendTo(context, wherePlace, new ArrayList&lt;Object&gt;(realPlace.getArguments()));
+                                        } else {
+                                            arguments.add(context.runtime.createMessage(Message.wrap(context.runtime.nil)));
+                                            context.runtime.newMessageFrom(realPlace, newName, arguments).sendTo(context, wherePlace);
+                                        }
+                                    } else {
+                                        arguments.add(context.runtime.createMessage(Message.wrap(IokeObject.as(value))));
+                                        context.runtime.newMessageFrom(realPlace, newName, arguments).sendTo(context, wherePlace);
+                                    }
                                 } else {
-                                    IokeObject.assign(wherePlace, realPlace.getName(), value, context, message);
+                                    if(value == null) {
+                                        IokeObject.removeCell(wherePlace, context, message, realPlace.getName());
+                                    } else {
+                                        IokeObject.assign(wherePlace, realPlace.getName(), value, context, message);
+                                    }
                                 }
                             } catch(Throwable e) {}
                         }</diff>
      <filename>src/main/ioke/lang/FlowControlBehavior.java</filename>
    </modified>
    <modified>
      <diff>@@ -117,6 +117,8 @@ public class Runtime {
     public IokeObject inspectMessage = newMessage(&quot;inspect&quot;);
     public IokeObject noticeMessage = newMessage(&quot;notice&quot;);
 
+    public IokeObject removeCellMessage = newMessage(&quot;removeCell!&quot;);
+
     public IokeObject plusMessage = newMessage(&quot;+&quot;);
     public IokeObject minusMessage = newMessage(&quot;-&quot;);
     public IokeObject multMessage = newMessage(&quot;*&quot;);</diff>
      <filename>src/main/ioke/lang/Runtime.java</filename>
    </modified>
    <modified>
      <diff>@@ -52,6 +52,22 @@ describe(DefaultBehavior,
             error!(&quot;non-local yay!&quot;)))
         Text fluxie2 wowsie should == 13
       )
+
+      it(&quot;should bind a new place temporarily, and then remove it&quot;,
+        X = Origin mimic
+        let(X testOfLetMethod, method(42),
+          X testOfLetMethod should == 42
+        )
+        X cellNames should not include(:testOfLetMethod)
+      )
+
+      it(&quot;should bind a new place with cell temporarily, and then remove it&quot;,
+        X = Origin mimic
+        let(X cell(:testOfLetMethod2), method(42),
+          X testOfLetMethod2 should == 42
+        )
+        X cellNames should not include(:testOfLetMethod2)
+      )
     )
   )
 )</diff>
      <filename>test/let_spec.ik</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e29457890a4f2ea2871679647039250f267cdd7b</id>
    </parent>
  </parents>
  <author>
    <name>Ola Bini</name>
    <login>olabini</login>
    <email>ola.bini@gmail.com</email>
  </author>
  <url>http://github.com/olabini/ioke/commit/8af3954df7961b3f594c73db5059310469e45df5</url>
  <id>8af3954df7961b3f594c73db5059310469e45df5</id>
  <committed-date>2009-01-10T06:05:14-08:00</committed-date>
  <authored-date>2009-01-10T06:05:14-08:00</authored-date>
  <message>Make it possible to assign a place that doesn't exist, and then have it disappear again. This allows temporary overriding in the manner of categories, for specific cells</message>
  <tree>5e68c8bea39ca8af1ab1f8091ac97655948b6ce8</tree>
  <committer>
    <name>Ola Bini</name>
    <login>olabini</login>
    <email>ola.bini@gmail.com</email>
  </committer>
</commit>
