anchor.diff:                  _nextId = (_nextId + 1) & 0xFFFF;
                 }
   
  -              blocks[idx] = rid;
  -              lights[idx] = light;
  -              skys[idx] = sky;
  +              cs.blocks[idx] = rid;
  +              cs.light[idx] = light;
  +              cs.sky[idx] = sky;
                 idx++;
   
  -              if (block != Blocks.AIR) count++;
  -              if (light != 0) count++;
  -              if (sky != 15) count++;
  +              if (block != Blocks.AIR) cs.count++;
  +              if (light != 0) cs.count++;
  +              if (sky != 15) cs.count++;
               }
             }
           }
  -        section['blocks'] = CryptoUtils.bytesToBase64(new Uint8List.view(blocks.buffer));
  -        section['light'] = CryptoUtils.bytesToBase64(lights);
  -        section['sky'] = CryptoUtils.bytesToBase64(skys);
  -        section['count'] = count;
  +        var section = new Map();
  +        sections[i] = section;
  +        section['buffer'] = CryptoUtils.bytesToBase64(cs._buffer);
  +        section['count'] = cs.count;
           port.send(out);
           sections[i] = null;
         }
  
positive.code:   static final Uint8List _emptySkySection = new Uint8List(16 * 16 * 16)..fillRange(0, 16 *
        16 * 16, 15);
  
    Uint16List blocks = new Uint16List(16 * 16 * 16);
    Uint8List light = new Uint8List(16 * 16 * 16);
    Uint8List sky = new Uint8List(16 * 16 * 16)..setAll(0, _emptySkySection);
  
    int count = 0;
    bool needsBuild = false;
    bool needsUpdate = false;
  }
  
negative.code:     for (int i = 0; i < 16; i++) {
        var dSection = dSections[i];
        if (dSection != null) {
          ChunkSection section = sections[i] = new ChunkSection.fromList(
            new Uint8List.fromList(CryptoUtils.base64StringToBytes(dSection['buffer'])));
          section.count = dSection['count'];
        }
      }
      if (data['done']) {
  