anchor.diff:          return node;
         }
         assert(!environment.contains(node));
  +      --node.variable.writeCount; // This assignment was removed.
         return next;
       }
     }
  
positive.code:     if (s is Assign && t is Assign && s.variable == t.variable) {
        Statement next = combineStatements(s.next, t.next);
        if (next != null) {
          --t.variable.writeCount; // Two assignments become one.
          return new Assign(s.variable,
                            combine(s.definition, t.definition),
                            next);
  
negative.code:       if (node.variable.readCount <= 1) {
          // A single-use constant should always be propagted to its use site.
          constantEnvironment[node.variable] = visitExpression(node.definition);
          --node.variable.writeCount;
          return visitStatement(node.next);
        } else {
          // With more than one use, we cannot propagate the constant.
  