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:   final List<Binding> bindings = <Binding>[];
    final Environment parent;
  
    Environment.empty() : parent = null;
    Environment(this.parent);
  
    bool contains(VariableDeclaration variable) {
      for (Binding b in bindings.reversed) {
        if (identical(b.variable, variable)) return true;
      }
      return parent?.contains(variable) ?? false;
    }
  
    Binding lookupBinding(VariableDeclaration variable) {
  
negative.code:     while (configuration != null) {
        configuration = configuration.step(this);
      }
      ;
    }
  
    Configuration exec(Statement statement, ExecConfiguration conf) =>
  