anchor.diff:      if (n == null || n <= 0) {
         throw new ArgumentError.value(n, 'n', 'non positive');
       }
  -    var l = module.callMethod('getInt32Array', [ptr.addr, n]);
  -    if (free) {
  -      this.free(ptr);
  -    }
  -    return l;
  +    Int32List list = module.callMethod('getInt32Array', [ptr.addr, n]);
  +    list = new Int32List.fromList(list);
  +    if (free) {
  +      this.free(ptr);
  +    }
  +    return list;
     }
   
     Pointer heapString(String s) {
  
positive.code: 
    callFunc(String method, [List args]) => module.callMethod('_$method', args);
  
    Pointer heapStrings(List<String> l) {
      if (l == null) {
        throw new ArgumentError.notNull('l');
      }
      if (l.isEmpty) {
        throw new ArgumentError.value(l, 'l', 'empty');
      }
  
      var ptr = malloc(l.length * SIZEOF_PTR);
      for (var i = 0; i < l.length; i++) {
        var p = heapString(l[i]);
        var addr = ptr.addr + (i * SIZEOF_PTR);
        module.callMethod('setValue', [addr, p.addr, '*']);
      }
  
negative.code:     if (n == null || n <= 0) {
        throw new ArgumentError.value(n, 'n', 'non positive');
      }
      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, '*']);
        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');
  