anchor.diff:       bool showTabs,
        @Flag(abbr: 'E', help: r'display $ at end of each line')
        bool showEnds,
  -     @Flag(abbr: 'v', help: '(not yet supported) use ^ and M- notation, except for LFD and TAB')
  +     @Flag(abbr: 'v', help: 'use ^ and M- notation, except for LFD and TAB')
        bool showNonprinting}) {
   
     if(showAll) showEnds = showTabs = showNonprinting = true;
  
positive.code: import 'dart:async';
  import 'dart:convert';
  
  import 'package:unscripted/unscripted.dart';
  import 'package:quiver/async.dart';
  import 'package:quiver/iterables.dart';
  import 'package:quiver/strings.dart';
  
  main(arguments) => sketch(cat).execute(arguments);
  
  @Command(help: 'Concatenate FILE(s), or standard input, to standard output.')
  @ArgExample('f - g', help: "Output f's contents, then standard input, then g's contents.")
  @ArgExample('', help: 'Copy standard input to standard output.')
  /// A dart implementation of the unix utility [cat][cat_wiki].
  /// [cat_wiki]: http://en.wikipedia.org/wiki/Cat_(Unix)
  cat(
      List<Input> files,
      {@Flag(abbr: 'n', help: 'number all output lines')
  
negative.code:   if(t)                  showTabs = showNonprinting = true;
    if(numberNonblank)                         number = true;
  
    // Default to stdin.
    if (files.isEmpty) files = [Input.parse('-')];
  
    forEachAsync(files, (Input input) {
  
      // Get lines.
      var lines = input.stream.transform(UTF8.decoder.fuse(const LineSplitter()));
  
      // Squeeze blank lines.
      if(squeezeBlank) lines = squeezeBlankLines(lines);
  
      // Number lines.
      if(number) {
        lines = enumerateStream(lines);
        if(numberNonblank) {
  