anchor.diff:    }
   
     visitPropertyGet(PropertyGet node) {
  -    return new PropertyGet(clone(node.receiver), node.name);
  +    return new PropertyGet(
  +        clone(node.receiver), node.name, node.interfaceTarget);
     }
   
     visitPropertySet(PropertySet node) {
  -    return new PropertySet(clone(node.receiver), node.name, clone(node.value));
  +    return new PropertySet(clone(node.receiver), node.name, clone(node.value),
  +        node.interfaceTarget);
     }
   
     visitDirectPropertyGet(DirectPropertyGet node) {
  
positive.code:     return substitute(type, typeSubstitution);
    }
  
    visitInvalidExpression(InvalidExpression node) => new InvalidExpression();
  
    visitVariableGet(VariableGet node) {
      return new VariableGet(variables[node.variable]);
    }
  
    visitVariableSet(VariableSet node) {
  
negative.code:   }
  
    visitLogicalExpression(LogicalExpression node) {
      return new LogicalExpression(clone(node.left), node.operator,
          clone(node.right), visitOptionalType(node.staticType));
    }
  
    visitConditionalExpression(ConditionalExpression node) {
      return new ConditionalExpression(clone(node.condition), clone(node.then),
          clone(node.otherwise), visitOptionalType(node.staticType));
    }
  
    visitStringConcatenation(StringConcatenation node) {
  