anchor.diff:    }
   }
   
  +class _NodeVisitor extends UnifyingAstVisitor {
  +  Set<AstNode> skippedNodes;
  +  _NodeVisitor(this.skippedNodes);
  +
  +  @override
  +  visitNode(AstNode node) {
  +    skippedNodes.add(node);
  +
  +    super.visitNode(node);
  +  }
  +}
  +
   class _Visitor extends SimpleAstVisitor<void> {
     final LintRule rule;
   
  
positive.code: import 'package:analyzer/dart/ast/visitor.dart';
  
  import '../analyzer.dart';
  import '../extensions.dart';
  
  const _desc = r'Use interpolation to compose strings and values.';
  
  
negative.code:         return;
        }
        if (leftOperand.staticType?.isDartCoreString ?? false) {
          rule.reportLint(node);
          node.accept(_NodeVisitor(skippedNodes));
        }
      }
    }
  