anchor.diff:  }
   
   class TraceSummary {
  +  final int numSymbols;
  +
     Map<String, TraceSymbol> _symbols = {};
     List _events = [];
     List<TraceSymbol> _stack = [];
     List<TraceSymbol> _topExclusive = [];
     List<TraceSymbol> _topInclusive = [];
  +  bool _marked = false;
  +  int _totalSamples = 0;
  +
  +  TraceSummary(this.numSymbols);
   
     void _processEventsFromFile(String name) {
       var file = new File(name);
  
positive.code:     _print();
    }
  
    void _print() {
      print('Top ${NUM_SYMBOLS} exlusive symbols:');
      _topExclusive.getRange(0, NUM_SYMBOLS).forEach((a) {
        print('${a.exclusive} ${a.name}');
      });
      print('');
      print('Top ${NUM_SYMBOLS} inclusive symbols:');
      _topInclusive.getRange(0, NUM_SYMBOLS).forEach((a) {
        print('${a.inclusive} ${a.name}');
      });
    }
  }
  
  main(List<String> arguments) {
    if (arguments.length < 1) {
      print('${Platform.executable} ${Platform.script} <input>');
      return;
    }
    String input = arguments[0];
    TraceSummary ts = new TraceSummary();
    ts.summarize(input);
  }
  
negative.code:     var symbol = _stack.last;
      if (symbol.name != name) {
        throw new StateError('$name not found at top of stack.');
      }
      if ((_stack.length > 1) && (_marked == false)) {
        // We are transitioning from the sequence of begins to the sequence
        // of ends. Mark the symbols on the stack.
        _marked = true;
        _totalSamples++;
        // Mark all symbols except the top with an inclusive tick.
        for (int i = 1; i < _stack.length - 1; i++) {
          _stack[i].inclusive++;
        }
        _stack.last.exclusive++;
      }
      _stack.removeLast();
    }
  