anchor.diff:      return ptr;
     }
   
  -  Pointer heapInt(int i) {
  +  Pointer heapInt([int i = 0]) {
       var ptr = malloc(SIZEOF_INT);
       if (i != null) {
         module.callMethod('setValue', [ptr.addr, i, 'i32']);
  
positive.code:     return ptr;
    }
  
    Pointer heapDouble(double d) {
      var ptr = malloc(SIZEOF_DBL);
      if (d != null) {
        module.callMethod('setValue', [ptr.addr, d, 'double']);
  
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');
  