anchor.diff:    final bool skipTemplate = parsedArguments['skip-template'] as bool;
     final bool verbose = parsedArguments['verbose'] as bool;
     final bool help = parsedArguments['help'] as bool;
  +  final int numberShards = int.tryParse(parsedArguments['shards'] as String);
  +  final int shardIndex = int.tryParse(parsedArguments['shard-index'] as String);
     final List<File> files = parsedArguments
       .rest
       .expand((String path) => Glob(path).listSync())
  
positive.code:       help: 'How many times to run each test. Set to a high value to look for flakes.',
        valueHelp: 'count',
      )
      ..addFlag(
        'skip-on-fetch-failure',
        defaultsTo: false,
  
negative.code:   if (verbose)
      print('Starting run_tests.dart...');
  
    if (files.length < shardIndex)
      print('Warning: There are more shards than tests. Some shards will not run any tests.');
  
    if (numberShards <= shardIndex) {
      print('Error: There are more shard indexes than shards.');
      return help;
    }
  
    // Best attempt at evenly splitting tests among the shards
    final List<File> shardedFiles = <File>[];
    for (int i = shardIndex; i < files.length; i += numberShards) {
      shardedFiles.add(files[i]);
    }
  
    int testCount = 0;
    int failures = 0;
  
    if (verbose) {
      final String s = files.length == 1 ? '' : 's';
      final String ss = shardedFiles.length == 1 ? '' : 's';
      print('${files.length} file$s specified. ${shardedFiles.length} test$ss in shard #$shardIndex.');
      print('');
    }
  
    if (verbose) {
      print('Tests in this shard:');
      for (final File file in shardedFiles)
        print(file.path);
    }
    print('');
  
    for (final File file in shardedFiles) {
      if (verbose)
        print('Processing ${file.path}...');
      TestFile instructions;
  