anchor.diff:      if (argResults.wasParsed(_kOut))
         outputFile = fs.file(argResults[_kOut]);
   
  -    if (argResults[_kSkia] != null) {
  -      return runSkia(outputFile);
  -    } else {
  -      return runScreenshot(outputFile);
  +    switch (argResults[_kType]) {
  +      case _kDeviceType:
  +        return runScreenshot(outputFile);
  +      case _kSkiaType:
  +        return runSkia(outputFile);
  +      case _kRasterizerType:
  +        return runRasterizer(outputFile);
       }
     }
   
  
positive.code:   }
  
    Future<Null> runSkia(File outputFile) async {
      final Uri observatoryUri = new Uri(scheme: 'http', host: '127.0.0.1',
          port: int.parse(argResults[_kSkia]));
      final VMService vmService = await VMService.connect(observatoryUri);
      final Map<String, dynamic> skp = await vmService.vm.invokeRpcRaw('_flutter.screenshotSkp');
  
      outputFile ??= getUniqueFile(fs.currentDirectory, 'flutter', 'skp');
      final IOSink sink = outputFile.openWrite();
      sink.add(base64.decode(skp['skp']));
      await sink.close();
      await showOutputFileInfo(outputFile);
      if (await outputFile.length() < 1000) {
        final String content = await outputFile.readAsString(
          encoding: const AsciiCodec(allowInvalid: true),
  
negative.code:     device = await findTargetDevice();
      if (device == null)
        throwToolExit('Must have a connected device');
      if (argResults[_kType] == _kDeviceType && !device.supportsScreenshot)
        throwToolExit('Screenshot not supported for ${device.name}.');
      if (argResults[_kType] != _kDeviceType && argResults[_kObservatoryPort] == null)
        throwToolExit('Observatory port must be specified for screenshot type ${argResults[_kType]}');
      return super.verifyThenRunCommand();
    }
  
  