anchor.diff:      return parent.lookupBinding(variable);
     }
   
  +  Location lookupThis() {
  +    assert(containsThis());
  +    for (Binding b in bindings) {
  +      if (identical(b.variable.name, 'this')) return b.location;
  +    }
  +    return parent.lookupThis();
  +  }
  +
     Value lookup(VariableDeclaration variable) {
       return lookupBinding(variable).location.value;
     }
  
positive.code:     while (configuration != null) {
        configuration = configuration.step(this);
      }
    }
  
    Configuration exec(Statement statement, ExecConfiguration conf) =>
  
negative.code:     assert(!contains(variable));
      return new Environment(this)
        ..bindings.add(new Binding(variable, new Location(value)));
    }
  
    Environment extendWithThis(ObjectValue v) {
      assert(!containsThis());
      return extend(new VariableDeclaration('this'), v);
    }
  }
  
  