anchor.diff:    @override
     final bool hidden;
   
  -  @override
  -  String get name => 'migrate';
  +  MigrateCommand({this.logProvider, this.hidden = false}) {
  +    MigrateOptions.defineOptions(argParser);
  +  }
   
     @override
     String get description =>
  
positive.code:       }
      }
    }
  }
  
  class _ServerListener with ServerListener {
    final Logger logger;
  
    _ServerListener(this.logger);
  
    @override
    void log(String prefix, String details) {
      logger.trace('[$prefix] $details');
    }
  }
  
  String get _dartSdkVersion {
    String version = Platform.version;
  
    // Remove the build date and OS.
    if (version.contains(' ')) {
      version = version.substring(0, version.indexOf(' '));
    }
  
    // Convert a git hash to 8 chars.
    // '2.8.0-edge.fd992e423ef69ece9f44bd3ac58fa2355b563212'
    final RegExp versionRegExp = RegExp(r'^.*\.([0123456789abcdef]+)$');
    RegExpMatch match = versionRegExp.firstMatch(version);
    if (match != null && match.group(1).length == 40) {
      String commit = match.group(1);
      version = version.replaceAll(commit, commit.substring(0, 10));
    }
  
    return version;
  }
  
negative.code: import 'package:analysis_server_client/server.dart';
  import 'package:args/command_runner.dart';
  import 'package:cli_util/cli_logging.dart';
  import 'package:nnbd_migration/src/messages.dart';
  import 'package:path/path.dart' as path;
  
  import '../util.dart';
  import 'apply.dart';
  import 'display.dart';
  import 'options.dart';
  
  String get _dartSdkVersion {
    String version = Platform.version;
  
    // Remove the build date and OS.
    if (version.contains(' ')) {
      version = version.substring(0, version.indexOf(' '));
    }
  
    // Convert a git hash to 8 chars.
    // '2.8.0-edge.fd992e423ef69ece9f44bd3ac58fa2355b563212'
    final RegExp versionRegExp = RegExp(r'^.*\.([0123456789abcdef]+)$');
    RegExpMatch match = versionRegExp.firstMatch(version);
    if (match != null && match.group(1).length == 40) {
      String commit = match.group(1);
      version = version.replaceAll(commit, commit.substring(0, 10));
    }
  
    return version;
  }
  
  // TODO(devoncarew): Over time, we should look to share code with the
  // implementation here and that in lib/src/driver.dart.
  
  typedef LogProvider = Logger Function();
  
  /// Perform null safety related migrations on the user's code.
  class MigrateCommand extends Command {
  