anchor.diff:  /// true if flutter is supported
   final isNodeSupported = whichSync('node') != null;
   
  +Future<List<String>> topLevelDir(String dir) async {
  +  var list = <String>[];
  +  await Directory(dir).list(recursive: false).listen((event) {
  +    if (event is Directory) {
  +      list.add(basename(event.path));
  +    }
  +  }).asFuture();
  +  return list;
  +}
  +
  +List<String> _forbiddenDirs = ['node_modules', '.dart_tool', 'build'];
  +
  +List<String> filterDartDirs(List<String> dirs) => dirs.where((element) {
  +      if (element.startsWith('.')) {
  +        return false;
  +      }
  +      if (_forbiddenDirs.contains(element)) {
  +        return false;
  +      }
  +      return true;
  +    }).toList(growable: false);
  +
   /// Run basic tests on dart/flutter package
   ///
   /// Dart:
  
positive.code:       flutter test --no-pub
      ''');
    } else {
      var supportsNnbdExperiment =
          analysisOptionsSupportsNnbdExperiment(analysisOptionsMap);
      var dartExtraOptions = '';
      var dartRunExtraOptions = '';
      if (supportsNnbdExperiment) {
  
negative.code: 
    // Formatting change in 2.9 with hashbang first line
    if (dartVersion >= Version(2, 9, 0, pre: '0')) {
      try {
        var dirs = await topLevelDir(path);
        await shell.run('''
        # Formatting
        dartfmt -n --set-exit-if-changed ${filterDartDirs(dirs).join(' ')}
      ''');
      } catch (e) {
        // Sometimes we allow formatting errors...
  
        // if (supportsNnbdExperiment) {
        //  stderr.writeln('Error in dartfmt during nnbd experiment, ok...');
        //} else {
        //
  
        // but in general no!
        rethrow;
      }
    }
  
    if (isFlutterPackage) {
  