anchor.diff:      if (n == null || n <= 0) {
         throw new ArgumentError.value(n, 'n', 'non positive');
       }
  -    var l = new List<String>(n);
  +    var list = new List<String>(n);
       for (var i = 0; i < n; i++) {
         var addr = ptr.addr + (i * SIZEOF_PTR);
         int p = module.callMethod('getValue', [addr, '*']);
  -      l[i] = stringify(new Pointer._(p), free);
  -    }
  -    if (free) {
  -      this.free(ptr);
  -    }
  -    return l;
  -  }
  -
  -  Pointer heapDoubles(Float64List l) {
  -    if (l == null) {
  -      throw new ArgumentError.notNull('l');
  -    }
  -    if (l.isEmpty) {
  -      throw new ArgumentError.value(l, 'l', 'empty');
  -    }
  -    var ptr = malloc(l.lengthInBytes);
  -    module.callMethod('setTypedData', [l, ptr.addr]);
  -    return ptr;
  -  }
  -
  +      list[i] = stringify(new Pointer._(p), free);
  +    }
  +    if (free) {
  +      this.free(ptr);
  +    }
  +    return list;
  +  }
  +
  +  /// Requires `--post-js packages/emscripten/post.js` on compilation.
  +  Pointer heapDoubles(Float64List list) {
  +    if (list == null) {
  +      throw new ArgumentError.notNull('list');
  +    }
  +    if (list.isEmpty) {
  +      throw new ArgumentError.value(list, 'list', 'empty');
  +    }
  +    var ptr = malloc(list.lengthInBytes);
  +    module.callMethod('setTypedData', [list, ptr.addr]);
  +    return ptr;
  +  }
  +
  +  /// Requires `--post-js packages/emscripten/post.js` on compilation.
     Float64List derefDoubles(Pointer ptr, int n, [bool free = true]) {
       if (ptr == null || ptr == Pointer.NIL) {
         throw new ArgumentError.notNull('ptr');
  
positive.code:     return ptr;
    }
  
    Pointer heapInt(int i) {
      var ptr = malloc(SIZEOF_INT);
      if (i != null) {
        module.callMethod('setValue', [ptr.addr, i, 'i32']);
  
negative.code:     if (n == null || n <= 0) {
        throw new ArgumentError.value(n, 'n', 'non positive');
      }
      Float64List list = module.callMethod('getFloat64Array', [ptr.addr, n]);
      list = new Float64List.fromList(list);
      if (free) {
        this.free(ptr);
      }
      return list;
    }
  
    /// Requires `--post-js packages/emscripten/post.js` on compilation.
    Pointer heapInts(Int32List list) {
      if (list == null) {
        throw new ArgumentError.notNull('list');
      }
      if (list.isEmpty) {
        throw new ArgumentError.value(list, 'list', 'empty');
      }
      var ptr = malloc(list.lengthInBytes);
      module.callMethod('setTypedData', [list, ptr.addr]);
      return ptr;
    }
  
    /// Requires `--post-js packages/emscripten/post.js` on compilation.
    Int32List derefInts(Pointer ptr, int n, [bool free = true]) {
      if (ptr == null || ptr == Pointer.NIL) {
        throw new ArgumentError.notNull('ptr');
  