anchor.diff:  
   main() {
     defineReflectiveSuite(() {
  -    defineReflectiveTests(_MigrationCliTest);
  +    defineReflectiveTests(_MigrationCliTestPosix);
  +    defineReflectiveTests(_MigrationCliTestWindows);
     });
   }
   
   class _MigrationCli extends MigrationCli {
     Future<void> Function() _runWhilePreviewServerActive;
   
  -  _MigrationCli(_MigrationCliTest test)
  +  _MigrationCli(_MigrationCliTestBase test)
         : super(
               binaryName: 'nnbd_migration',
               loggerFactory: (isVerbose) => test.logger = _TestLogger(isVerbose),
  
positive.code:   }
  }
  
  /// TODO(paulberry): move into cli_util
  class _TestLogger implements Logger {
    final stderrBuffer = StringBuffer();
  
negative.code:   }
  }
  
  abstract class _MigrationCliTestBase {
    void set logger(_TestLogger logger);
  
    MemoryResourceProvider get resourceProvider;
  }
  
  mixin _MigrationCliTestMethods on _MigrationCliTestBase {
    @override
    /*late*/ _TestLogger logger;
  
    final hasVerboseHelpMessage = contains('for verbose help output');
  
    final hasUsageText = contains('Usage: nnbd_migration');
  
    String assertErrorExit(MigrationCli cli) {
      expect(cli.exitCode, isNotNull);
  