anchor.diff:    /// cloning further instances.
     Expression extract(Constant constant) {
       Expression expression = constant.asExpression();
  -    replacementNodes ??= new Set<Expression>.identity();
       if (!replacementNodes.add(expression)) {
         expression = cloner.clone(expression);
         replacementNodes.add(expression);
  
positive.code: 
    visitAsExpression(AsExpression node) {
      final Constant constant = _evaluateSubexpression(node.operand);
      if (hasUnevaluatedChild(node)) {
        return unevaluated(node, new AsExpression(extract(constant), node.type));
      }
      return ensureIsSubtype(constant, evaluateDartType(node, node.type), node);
  
negative.code:     for (int i = 0; i < node.expressions.length; ++i) {
        entries[i] = _evaluateSubexpression(node.expressions[i]);
      }
      if (shouldBeUnevaluated) {
        final expressions = new List<Expression>(node.expressions.length);
        for (int i = 0; i < node.expressions.length; ++i) {
          expressions[i] = extract(entries[i]);
  