anchor.diff:      new OptionHandler(Flags.progress, passThrough),
       new OptionHandler(Flags.version, (_) => wantVersion = true),
       new OptionHandler('--library-root=.+', setLibraryRoot),
  -    new OptionHandler(Flags.readData, setReadData),
  -    new OptionHandler(Flags.writeData, setWriteData),
  +    new OptionHandler('${Flags.readData}|${Flags.readData}=.+', setReadData),
  +    new OptionHandler('${Flags.writeData}|${Flags.writeData}=.+', setWriteData),
       new OptionHandler('--out=.+|-o.*', setOutput, multipleArguments: true),
       new OptionHandler('-O.*', setOptimizationLevel),
       new OptionHandler(Flags.allowMockCompilation, ignoreOption),
  
positive.code:       break;
      case CompilationStrategy.toData:
        out ??= currentDirectory.resolve('out.dill');
        writeDataUri = currentDirectory.resolve('$out.data');
        options.add('${Flags.writeData}=${writeDataUri}');
        break;
      case CompilationStrategy.fromData:
        out ??= currentDirectory.resolve('out.js');
        options.add(
            '${Flags.readData}=${currentDirectory.resolve('$scriptName.data')}');
        break;
    }
    options.add('--out=$out');
  
negative.code:     if (compilationStrategy == CompilationStrategy.toData) {
        fail("Cannot read and write serialized simultaneously.");
      }
      if (argument != Flags.readData) {
        readDataUri = currentDirectory
            .resolve(nativeToUriPath(extractPath(argument, isDirectory: false)));
      }
      compilationStrategy = CompilationStrategy.fromData;
    }
  
    void setWriteData(String argument) {
      if (compilationStrategy == CompilationStrategy.fromData) {
        fail("Cannot read and write serialized simultaneously.");
      }
      if (argument != Flags.writeData) {
        writeDataUri = currentDirectory
            .resolve(nativeToUriPath(extractPath(argument, isDirectory: false)));
      }
      compilationStrategy = CompilationStrategy.toData;
    }
  