anchor.diff:      return this;
     }
   
  -  final List<ByteData> _chunks;
  +  List<ByteData> _chunks;
   
     int _kObjectAlignment;
     int _N;
     int _E;
     int _size;
   
  +  // Indexed by node id, with id 0 representing invalid/uninitialized.
  +  // From snapshot.
  +  Uint16List _cids;
  +  Uint32List _shallowSizes;
  +  Uint32List _firstSuccs;
  +  Uint32List _succs;
  +  Uint32List _addressesLow; // No Uint64List in Javascript.
  +  Uint32List _addressesHigh;
  +
  +  // Intermediates.
     AddressMapper _addrToId;
  -
  -  // Indexed by node id, with id 0 representing invalid/uninitialized.
  -  Uint32List _positions; // Position of the node in the snapshot.
     Uint32List _postOrderOrdinals; // post-order index -> id
     Uint32List _postOrderIndices; // id -> post-order index
     Uint32List _firstPreds; // Offset into preds.
     Uint32List _preds;
  +
  +  // Outputs.
     Uint32List _doms;
     Uint32List _retainedSizes;
   
  -  void _buildPositions() {
  +  void _remapNodes() {
       var N = _N;
  +    var E = 0;
       var addrToId = new AddressMapper(N);
   
  -    var positions = new Uint32List(N + 1);
  +    var addressesHigh = new Uint32List(N + 1);
  +    var addressesLow = new Uint32List(N + 1);
  +    var shallowSizes = new Uint32List(N + 1);
  +    var cids = new Uint16List(N + 1);
   
       var stream = new ReadStream(_chunks);
       stream.readUnsigned();
  
positive.code:     var N = _N;
  
      var size = 0;
      var positions = _positions;
      var postOrderOrdinals = _postOrderOrdinals;
      var doms = _doms;
      var retainedSizes = new Uint32List(N + 1);
  
      // Start with retained size as shallow size.
      var reader = new ReadStream(_chunks);
      for (var i = 1; i <= N; i++) {
        reader.position = positions[i];
        reader.skipUnsigned(); // addr
        reader.readUnsigned(); // shallowSize
        var shallowSize = reader.clampedUint32;
        retainedSizes[i] = shallowSize;
        size += shallowSize;
      }
  
      // In post order (bottom up), add retained size to dominator's retained
      // size, skipping root.
  
negative.code:     // We build futures here instead of marking the steps as async to avoid the
      // heavy lifting being inside a transformed method.
  
      statusReporter.add("Remapping $_N objects...");
      await new Future(() => _remapNodes());
  
      statusReporter.add("Remapping $_E references...");
      await new Future(() => _remapEdges());
  
      _addrToId = null;
      _chunks = null;
  
      statusReporter.add("Finding post order...");
      await new Future(() => _buildPostOrder());
  