Version 2.15.0-158.0.dev

Merge commit '6ff1f83db62797926cc765a46919c20b85c6edb3' into 'dev'
diff --git a/DEPS b/DEPS
index dc32bcf..b279283 100644
--- a/DEPS
+++ b/DEPS
@@ -139,7 +139,7 @@
   "pool_rev": "7abe634002a1ba8a0928eded086062f1307ccfae",
   "process_rev": "56ece43b53b64c63ae51ec184b76bd5360c28d0b",
   "protobuf_rev": "c1eb6cb51af39ccbaa1a8e19349546586a5c8e31",
-  "pub_rev": "15a46117da29cc572fba620241c83a2117cdae09",
+  "pub_rev": "a817863ee93241ff36fce6856c6d12fd8fde0907",
   "pub_semver_rev": "a43ad72fb6b7869607581b5fedcb186d1e74276a",
   "resource_rev": "6b79867d0becf5395e5819a75720963b8298e9a7",
   "root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_unnecessary_raw_string.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_unnecessary_raw_string.dart
new file mode 100644
index 0000000..4c3e05a
--- /dev/null
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_unnecessary_raw_string.dart
@@ -0,0 +1,38 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/dart/abstract_producer.dart';
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analyzer/source/source_range.dart';
+import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+
+class RemoveUnnecessaryRawString extends CorrectionProducer {
+  @override
+  bool get canBeAppliedInBulk => true;
+
+  @override
+  bool get canBeAppliedToFile => true;
+
+  @override
+  FixKind get fixKind => DartFixKind.REMOVE_UNNECESSARY_RAW_STRING;
+
+  @override
+  FixKind get multiFixKind => DartFixKind.REMOVE_UNNECESSARY_RAW_STRING_MULTI;
+
+  @override
+  Future<void> compute(ChangeBuilder builder) async {
+    var offset = diagnostic?.problemMessage.offset;
+    if (offset == null) {
+      return;
+    }
+    await builder.addDartFileEdit(file, (builder) {
+      builder.addDeletion(SourceRange(offset, 1));
+    });
+  }
+
+  /// Return an instance of this class. Used as a tear-off in `FixProcessor`.
+  static RemoveUnnecessaryRawString newInstance() =>
+      RemoveUnnecessaryRawString();
+}
diff --git a/pkg/analysis_server/lib/src/services/correction/fix.dart b/pkg/analysis_server/lib/src/services/correction/fix.dart
index 10b07ef..c9a98b8 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix.dart
@@ -1009,6 +1009,16 @@
     DartFixKindPriority.IN_FILE,
     'Remove all unnecessary parentheses in file',
   );
+  static const REMOVE_UNNECESSARY_RAW_STRING = FixKind(
+    'dart.fix.remove.unnecessaryRawString',
+    DartFixKindPriority.DEFAULT,
+    "Remove unnecessary 'r' in string",
+  );
+  static const REMOVE_UNNECESSARY_RAW_STRING_MULTI = FixKind(
+    'dart.fix.remove.unnecessaryRawString.multi',
+    DartFixKindPriority.IN_FILE,
+    "Remove unnecessary 'r' in strings in file",
+  );
   static const REMOVE_UNNECESSARY_STRING_ESCAPE = FixKind(
     'dart.fix.remove.unnecessaryStringEscape',
     DartFixKindPriority.DEFAULT,
@@ -1016,7 +1026,7 @@
   );
   static const REMOVE_UNNECESSARY_STRING_ESCAPE_MULTI = FixKind(
     'dart.fix.remove.unnecessaryStringEscape.multi',
-    DartFixKindPriority.DEFAULT,
+    DartFixKindPriority.IN_FILE,
     "Remove unnecessary '\\' in strings in file",
   );
   static const REMOVE_UNNECESSARY_STRING_INTERPOLATION = FixKind(
@@ -1171,7 +1181,7 @@
   );
   static const REPLACE_NULL_WITH_VOID_MULTI = FixKind(
     'dart.fix.replace.nullWithVoid.multi',
-    DartFixKindPriority.DEFAULT,
+    DartFixKindPriority.IN_FILE,
     "Replace 'Null' with 'void' everywhere in file",
   );
   static const REPLACE_RETURN_TYPE = FixKind(
@@ -1191,7 +1201,7 @@
   );
   static const REPLACE_CONTAINER_WITH_SIZED_BOX_MULTI = FixKind(
     'dart.fix.replace.containerWithSizedBox.multi',
-    DartFixKindPriority.DEFAULT,
+    DartFixKindPriority.IN_FILE,
     "Replace with 'SizedBox' everywhere in file",
   );
   static const REPLACE_VAR_WITH_DYNAMIC = FixKind(
diff --git a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
index 598cd1a..3385e85 100644
--- a/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/fix_internal.dart
@@ -123,6 +123,7 @@
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_cast.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_new.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_parentheses.dart';
+import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_raw_string.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_string_escape.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unnecessary_string_interpolation.dart';
 import 'package:analysis_server/src/services/correction/dart/remove_unused.dart';
@@ -588,6 +589,9 @@
     LintNames.unnecessary_parenthesis: [
       RemoveUnnecessaryParentheses.newInstance,
     ],
+    LintNames.unnecessary_raw_strings: [
+      RemoveUnnecessaryRawString.newInstance,
+    ],
     LintNames.unnecessary_string_escapes: [
       RemoveUnnecessaryStringEscape.newInstance,
     ],
diff --git a/pkg/analysis_server/lib/src/services/linter/lint_names.dart b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
index 3e82fa6..cfdea77 100644
--- a/pkg/analysis_server/lib/src/services/linter/lint_names.dart
+++ b/pkg/analysis_server/lib/src/services/linter/lint_names.dart
@@ -123,6 +123,7 @@
       'unnecessary_nullable_for_final_variable_declarations';
   static const String unnecessary_overrides = 'unnecessary_overrides';
   static const String unnecessary_parenthesis = 'unnecessary_parenthesis';
+  static const String unnecessary_raw_strings = 'unnecessary_raw_strings';
   static const String unnecessary_string_escapes = 'unnecessary_string_escapes';
   static const String unnecessary_string_interpolations =
       'unnecessary_string_interpolations';
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_unnecessary_raw_string_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_unnecessary_raw_string_test.dart
new file mode 100644
index 0000000..25d0f84
--- /dev/null
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_unnecessary_raw_string_test.dart
@@ -0,0 +1,106 @@
+// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:analysis_server/src/services/correction/fix.dart';
+import 'package:analysis_server/src/services/linter/lint_names.dart';
+import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
+import 'package:test/expect.dart';
+import 'package:test_reflective_loader/test_reflective_loader.dart';
+
+import 'fix_processor.dart';
+
+void main() {
+  defineReflectiveSuite(() {
+    defineReflectiveTests(RemoveUnnecessaryRawStringBulkTest);
+    defineReflectiveTests(RemoveUnnecessaryRawStringInFileTest);
+    defineReflectiveTests(RemoveUnnecessaryRawStringTest);
+  });
+}
+
+@reflectiveTest
+class RemoveUnnecessaryRawStringBulkTest extends BulkFixProcessorTest {
+  @override
+  String get lintCode => LintNames.unnecessary_raw_strings;
+
+  Future<void> test_singleFile() async {
+    await resolveTestCode('''
+var a = r'ace';
+var b = r'aid';
+''');
+    await assertHasFix('''
+var a = 'ace';
+var b = 'aid';
+''');
+  }
+}
+
+@reflectiveTest
+class RemoveUnnecessaryRawStringInFileTest extends FixInFileProcessorTest {
+  Future<void> test_file() async {
+    createAnalysisOptionsFile(lints: [LintNames.unnecessary_raw_strings]);
+    await resolveTestCode('''
+var a = r'ace';
+var b = r'aid';
+''');
+    var fixes = await getFixesForFirstError();
+    expect(fixes, hasLength(1));
+    assertProduces(fixes.first, r'''
+var a = 'ace';
+var b = 'aid';
+''');
+  }
+}
+
+@reflectiveTest
+class RemoveUnnecessaryRawStringTest extends FixProcessorLintTest {
+  @override
+  FixKind get kind => DartFixKind.REMOVE_UNNECESSARY_RAW_STRING;
+
+  @override
+  String get lintCode => LintNames.unnecessary_raw_strings;
+
+  Future<void> test_double() async {
+    await resolveTestCode('''
+var a = r"ace";
+''');
+    await assertHasFix('''
+var a = "ace";
+''');
+  }
+
+  Future<void> test_multi_line_double() async {
+    await resolveTestCode('''
+var a = r"""
+abc
+""";
+''');
+    await assertHasFix('''
+var a = """
+abc
+""";
+''');
+  }
+
+  Future<void> test_multi_line_single() async {
+    await resolveTestCode("""
+var a = r'''
+abc
+''';
+""");
+    await assertHasFix("""
+var a = '''
+abc
+''';
+""");
+  }
+
+  Future<void> test_single() async {
+    await resolveTestCode('''
+var a = r'ace';
+''');
+    await assertHasFix('''
+var a = 'ace';
+''');
+  }
+}
diff --git a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
index 7dad5f2..0fbbd97 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/test_all.dart
@@ -149,6 +149,8 @@
 import 'remove_unnecessary_new_test.dart' as remove_unnecessary_new;
 import 'remove_unnecessary_parentheses_test.dart'
     as remove_unnecessary_parentheses;
+import 'remove_unnecessary_raw_string_test.dart'
+    as remove_unnecessary_raw_string;
 import 'remove_unnecessary_string_escapes_test.dart'
     as remove_unnecessary_string_escapes;
 import 'remove_unnecessary_string_interpolation_test.dart'
@@ -331,6 +333,7 @@
     remove_unnecessary_const.main();
     remove_unnecessary_new.main();
     remove_unnecessary_parentheses.main();
+    remove_unnecessary_raw_string.main();
     remove_unnecessary_string_escapes.main();
     remove_unnecessary_string_interpolation.main();
     remove_unused_catch_clause.main();
diff --git a/tests/ffi/ffi.status b/tests/ffi/ffi.status
index c54ce09..5335837 100644
--- a/tests/ffi/ffi.status
+++ b/tests/ffi/ffi.status
@@ -2,6 +2,9 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 
+function_callbacks_structs_by_value_test: Pass, Slow # https://dartbug.com/47304 https://dartbug.com/45007
+function_structs_by_value_generated_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
+
 [ $builder_tag == msan ]
 vmspecific_handle_test: Skip # https://dartbug.com/42314
 
@@ -14,9 +17,6 @@
 [ $system == android ]
 *: Pass, Slow # https://github.com/dart-lang/sdk/issues/38489
 
-[ $arch == arm && $system == linux ]
-function_callbacks_structs_by_value_test: Slow # QEMU https://dartbug.com/45007
-
 [ $compiler != dart2analyzer && $compiler != fasta && $runtime != dart_precompiled && $runtime != vm ]
 *: SkipByDesign # FFI is a VM-only feature. (This test suite is part of the default set.)
 
diff --git a/tests/ffi/ffi_native_test.dart b/tests/ffi/ffi_native_test.dart
index 34be137..074e236 100644
--- a/tests/ffi/ffi_native_test.dart
+++ b/tests/ffi/ffi_native_test.dart
@@ -6,25 +6,23 @@
 // with type arguments isn't supported in that version of Dart.
 
 import 'dart:ffi';
-import 'dart:nativewrappers';
-
-import 'package:expect/expect.dart';
 
 // Error: FFI leaf call must not have Handle return type.
-@FfiNative<Handle Function()>("foo", isLeaf: true)  //# 01: compile-time error
-external Object foo();  //# 01: compile-time error
+@FfiNative<Handle Function()>("foo", isLeaf: true) //# 01: compile-time error
+external Object foo(); //# 01: compile-time error
 
 // Error: FFI leaf call must not have Handle argument types.
-@FfiNative<Void Function(Handle)>("bar", isLeaf: true)  //# 02: compile-time error
-external void bar(Object);  //# 02: compile-time error
+@FfiNative<Void Function(Handle)>("bar", //# 02: compile-time error
+    isLeaf: true) //# 02: compile-time error
+external void bar(Object); //# 02: compile-time error
 
 class Classy {
   @FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr')
   external static int returnIntPtrStatic(int x);
 
   // Error: FfiNative annotations can only be used on static functions.
-  @FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr')  //# 03: compile-time error
-  external int returnIntPtrMethod(int x);  //# 03: compile-time error
+  @FfiNative<IntPtr Function(IntPtr)>('ReturnIntPtr') //# 03: compile-time error
+  external int returnIntPtrMethod(int x); //# 03: compile-time error
 }
 
 // Regression test: Ensure same-name FfiNative functions don't collide in the
@@ -33,9 +31,10 @@
   @FfiNative<Void Function()>('nop')
   external static void foo();
 }
+
 class B {
   @FfiNative<Void Function()>('nop')
   external static void foo();
 }
 
-void main() { /* Intentionally empty: Compile-time error tests. */ }
+void main() {/* Intentionally empty: Compile-time error tests. */}
diff --git a/tests/ffi/function_callbacks_structs_by_value_generated_test.dart b/tests/ffi/function_callbacks_structs_by_value_generated_test.dart
index f843c7c..a7c9590 100644
--- a/tests/ffi/function_callbacks_structs_by_value_generated_test.dart
+++ b/tests/ffi/function_callbacks_structs_by_value_generated_test.dart
@@ -615,16 +615,26 @@
     Struct1ByteInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct1ByteInt passStruct1ByteIntx10_a0 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a1 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a2 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a3 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a4 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a5 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a6 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a7 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a8 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a9 = Struct1ByteInt();
+Struct1ByteInt passStruct1ByteIntx10_a0 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a1 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a2 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a3 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a4 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a5 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a6 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a7 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a8 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a9 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct1ByteIntx10Result = 0;
@@ -712,25 +722,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a0 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a1 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a2 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a3 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a4 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a5 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a6 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a7 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a8 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a9 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesHomogeneousUint8x10Result = 0;
@@ -838,25 +848,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a0 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a1 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a2 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a3 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a4 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a5 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a6 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a7 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a8 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a9 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesInt2ByteAlignedx10Result = 0;
@@ -955,25 +965,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a0 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a2 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a3 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a4 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a5 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a6 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a7 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a8 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a9 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct4BytesHomogeneousInt16x10Result = 0;
@@ -1071,25 +1081,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a0 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a1 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a2 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a3 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a4 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a5 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a6 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a7 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a8 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a9 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct7BytesHomogeneousUint8x10Result = 0;
@@ -1237,25 +1247,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a0 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a1 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a2 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a3 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a4 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a5 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a6 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a7 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a8 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a9 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct7BytesInt4ByteAlignedx10Result = 0;
@@ -1363,16 +1373,26 @@
     Struct8BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesInt passStruct8BytesIntx10_a0 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a1 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a2 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a3 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a4 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a5 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a6 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a7 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a8 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a9 = Struct8BytesInt();
+Struct8BytesInt passStruct8BytesIntx10_a0 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a1 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a2 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a3 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a4 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a5 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a6 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a7 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a8 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a9 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesIntx10Result = 0;
@@ -1480,25 +1500,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a1 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a2 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a3 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a4 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a5 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a6 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a7 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a8 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a9 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesHomogeneousFloatx10Result = 0.0;
@@ -1595,16 +1615,26 @@
     Struct8BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesMixed passStruct8BytesMixedx10_a0 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a1 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a2 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a3 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a4 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a5 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a6 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a7 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a8 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a9 = Struct8BytesMixed();
+Struct8BytesMixed passStruct8BytesMixedx10_a0 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a1 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a2 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a3 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a4 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a5 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a6 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a7 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a8 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a9 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesMixedx10Result = 0.0;
@@ -1712,25 +1742,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a0 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a1 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a2 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a3 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a4 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a5 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a6 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a7 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a8 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a9 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct9BytesHomogeneousUint8x10Result = 0;
@@ -1901,25 +1931,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a0 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a1 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a2 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a3 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a4 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a5 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a6 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a7 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a8 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a9 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct9BytesInt4Or8ByteAlignedx10Result = 0;
@@ -2016,17 +2046,17 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a0 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a1 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a2 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a3 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a4 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a5 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct12BytesHomogeneousFloatx6Result = 0.0;
@@ -2110,15 +2140,15 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a0 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a1 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a2 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a3 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a4 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesHomogeneousFloatx5Result = 0.0;
@@ -2206,16 +2236,26 @@
     Struct16BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Struct16BytesMixed passStruct16BytesMixedx10_a0 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a1 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a2 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a3 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a4 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a5 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a6 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a7 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a8 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a9 = Struct16BytesMixed();
+Struct16BytesMixed passStruct16BytesMixedx10_a0 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a1 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a2 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a3 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a4 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a5 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a6 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a7 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a8 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a9 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesMixedx10Result = 0.0;
@@ -2314,16 +2354,26 @@
     Struct16BytesMixed2);
 
 // Global variables to be able to test inputs after callback returned.
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a0 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a1 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a2 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a3 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a4 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a5 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a6 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a7 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a8 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a9 = Struct16BytesMixed2();
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a0 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a1 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a2 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a3 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a4 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a5 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a6 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a7 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a8 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a9 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesMixed2x10Result = 0.0;
@@ -2442,16 +2492,26 @@
     Struct17BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct17BytesInt passStruct17BytesIntx10_a0 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a1 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a2 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a3 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a4 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a5 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a6 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a7 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a8 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a9 = Struct17BytesInt();
+Struct17BytesInt passStruct17BytesIntx10_a0 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a1 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a2 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a3 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a4 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a5 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a6 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a7 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a8 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a9 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct17BytesIntx10Result = 0;
@@ -2559,25 +2619,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a0 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a1 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a2 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a3 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a4 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a5 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a6 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a7 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a8 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a9 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct19BytesHomogeneousUint8x10Result = 0;
@@ -2847,25 +2907,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a0 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a1 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a2 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a3 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a4 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a5 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a6 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a7 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a8 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a9 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct20BytesHomogeneousInt32x10Result = 0;
@@ -2987,7 +3047,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousFloat passStruct20BytesHomogeneousFloat_a0 =
-    Struct20BytesHomogeneousFloat();
+    Pointer<Struct20BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct20BytesHomogeneousFloatResult = 0.0;
@@ -3044,15 +3104,15 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a0 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a1 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a2 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a3 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a4 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct32BytesHomogeneousDoublex5Result = 0.0;
@@ -3132,7 +3192,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct40BytesHomogeneousDouble passStruct40BytesHomogeneousDouble_a0 =
-    Struct40BytesHomogeneousDouble();
+    Pointer<Struct40BytesHomogeneousDouble>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct40BytesHomogeneousDoubleResult = 0.0;
@@ -3185,7 +3245,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct1024BytesHomogeneousUint64 passStruct1024BytesHomogeneousUint64_a0 =
-    Struct1024BytesHomogeneousUint64();
+    Pointer<Struct1024BytesHomogeneousUint64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct1024BytesHomogeneousUint64Result = 0;
@@ -3372,19 +3432,19 @@
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a0 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a1 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a2 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a3 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a4 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a5 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a6 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a7 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3486,19 +3546,19 @@
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a0 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a1 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a2 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a3 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a4 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a5 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a6 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a7 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3591,16 +3651,16 @@
 // Global variables to be able to test inputs after callback returned.
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a0 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a1 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a2 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a3 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a4 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a5 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a6 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a8 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3703,13 +3763,13 @@
 double passDoublex6Struct16BytesMixedx4Int32_a4 = 0.0;
 double passDoublex6Struct16BytesMixedx4Int32_a5 = 0.0;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a6 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a8 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a9 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passDoublex6Struct16BytesMixedx4Int32_a10 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3810,13 +3870,13 @@
 int passInt32x4Struct16BytesMixedx4Double_a2 = 0;
 int passInt32x4Struct16BytesMixedx4Double_a3 = 0;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a4 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a5 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a6 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 double passInt32x4Struct16BytesMixedx4Double_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3901,13 +3961,13 @@
 // Global variables to be able to test inputs after callback returned.
 Struct40BytesHomogeneousDouble
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a0 =
-    Struct40BytesHomogeneousDouble();
+    Pointer<Struct40BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a2 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct40BytesHomogeneousDoubleStruct4BytesHomoResult = 0.0;
@@ -4032,37 +4092,37 @@
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a16 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a17 = 0;
 Struct1ByteInt passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a18 =
-    Struct1ByteInt();
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a19 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a20 = 0;
 Struct4BytesHomogeneousInt16
     passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a21 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a22 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a23 = 0;
 Struct8BytesInt passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a24 =
-    Struct8BytesInt();
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a25 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a26 = 0;
 Struct8BytesHomogeneousFloat
     passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a27 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a28 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a29 = 0;
 Struct8BytesMixed passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a30 =
-    Struct8BytesMixed();
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a31 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a32 = 0;
 StructAlignmentInt16 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a33 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a34 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a35 = 0;
 StructAlignmentInt32 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a36 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a37 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a38 = 0;
 StructAlignmentInt64 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a39 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passInt32x8Doublex8Int64Int8Struct1ByteIntInt64IntResult = 0.0;
@@ -4243,7 +4303,8 @@
 typedef PassStructAlignmentInt16Type = Int64 Function(StructAlignmentInt16);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt16 passStructAlignmentInt16_a0 = StructAlignmentInt16();
+StructAlignmentInt16 passStructAlignmentInt16_a0 =
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt16Result = 0;
@@ -4292,7 +4353,8 @@
 typedef PassStructAlignmentInt32Type = Int64 Function(StructAlignmentInt32);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt32 passStructAlignmentInt32_a0 = StructAlignmentInt32();
+StructAlignmentInt32 passStructAlignmentInt32_a0 =
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt32Result = 0;
@@ -4341,7 +4403,8 @@
 typedef PassStructAlignmentInt64Type = Int64 Function(StructAlignmentInt64);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt64 passStructAlignmentInt64_a0 = StructAlignmentInt64();
+StructAlignmentInt64 passStructAlignmentInt64_a0 =
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt64Result = 0;
@@ -4400,16 +4463,26 @@
     Struct8BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a0 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a1 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a2 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a3 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a4 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a5 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a6 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a7 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a8 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a9 = Struct8BytesNestedInt();
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a0 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a1 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a2 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a3 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a4 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a5 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a6 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a7 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a8 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a9 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesNestedIntx10Result = 0;
@@ -4527,25 +4600,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a0 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a1 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a2 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a3 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a4 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a5 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a6 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a7 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a8 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a9 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedFloatx10Result = 0.0;
@@ -4643,25 +4716,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a0 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a1 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a2 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a3 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a4 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a5 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a6 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a7 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a8 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a9 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedFloat2x10Result = 0.0;
@@ -4761,25 +4834,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a0 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a1 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a2 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a3 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a4 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a5 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a6 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a7 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a8 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a9 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedMixedx10Result = 0.0;
@@ -4878,9 +4951,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesNestedInt passStruct16BytesNestedIntx2_a0 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 Struct16BytesNestedInt passStruct16BytesNestedIntx2_a1 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct16BytesNestedIntx2Result = 0;
@@ -4946,9 +5019,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct32BytesNestedInt passStruct32BytesNestedIntx2_a0 =
-    Struct32BytesNestedInt();
+    Pointer<Struct32BytesNestedInt>.fromAddress(0).ref;
 Struct32BytesNestedInt passStruct32BytesNestedIntx2_a1 =
-    Struct32BytesNestedInt();
+    Pointer<Struct32BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct32BytesNestedIntx2Result = 0;
@@ -5030,7 +5103,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt16 passStructNestedIntStructAlignmentInt16_a0 =
-    StructNestedIntStructAlignmentInt16();
+    Pointer<StructNestedIntStructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt16Result = 0;
@@ -5086,7 +5159,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt32 passStructNestedIntStructAlignmentInt32_a0 =
-    StructNestedIntStructAlignmentInt32();
+    Pointer<StructNestedIntStructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt32Result = 0;
@@ -5142,7 +5215,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt64 passStructNestedIntStructAlignmentInt64_a0 =
-    StructNestedIntStructAlignmentInt64();
+    Pointer<StructNestedIntStructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt64Result = 0;
@@ -5201,13 +5274,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a0 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a1 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a2 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a3 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructNestedIrregularEvenBiggerx4Result = 0.0;
@@ -5402,13 +5475,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a0 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a1 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a2 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a3 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesInlineArrayIntx4Result = 0;
@@ -5498,13 +5571,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a0 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a1 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a2 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a3 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructInlineArrayIrregularx4Result = 0;
@@ -5579,7 +5652,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructInlineArray100Bytes passStructInlineArray100Bytes_a0 =
-    StructInlineArray100Bytes();
+    Pointer<StructInlineArray100Bytes>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructInlineArray100BytesResult = 0;
@@ -5732,19 +5805,19 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a0 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a1 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a2 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a3 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a4 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct16BytesHomogeneousFloat2x5Result = 0.0;
@@ -5829,19 +5902,19 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a0 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a1 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a2 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a3 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a4 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct32BytesHomogeneousDouble2x5Result = 0.0;
@@ -5930,25 +6003,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a0 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a1 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a2 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a3 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a4 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a5 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a6 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a7 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a8 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a9 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct16BytesMixed3x10Result = 0.0;
@@ -6088,15 +6161,15 @@
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a0 = 0;
 Struct32BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a1 =
-    Struct32BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct32BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a2 = 0;
 Struct8BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a3 =
-    Struct8BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct8BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a4 = 0;
 Struct8BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a5 =
-    Struct8BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct8BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a6 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -6248,7 +6321,7 @@
 int passUint8Struct4BytesInlineArrayMultiDimensionalIn_a0 = 0;
 Struct4BytesInlineArrayMultiDimensionalInt
     passUint8Struct4BytesInlineArrayMultiDimensionalIn_a1 =
-    Struct4BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct4BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct4BytesInlineArrayMultiDimensionalIn_a2 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -6318,16 +6391,26 @@
     Struct3BytesPackedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a0 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a1 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a2 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a3 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a4 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a5 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a6 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a7 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a8 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a9 = Struct3BytesPackedInt();
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a0 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a1 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a2 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a3 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a4 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a5 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a6 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a7 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a8 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a9 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesPackedIntx10Result = 0;
@@ -6423,16 +6506,26 @@
     Struct8BytesPackedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a0 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a1 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a2 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a3 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a4 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a5 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a6 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a7 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a8 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a9 = Struct8BytesPackedInt();
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a0 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a1 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a2 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a3 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a4 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a5 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a6 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a7 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a8 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a9 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesPackedIntx10Result = 0;
@@ -6562,25 +6655,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a0 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a1 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a2 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a3 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a4 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a5 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a6 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a7 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a8 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a9 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 double passStruct9BytesPackedMixedx10DoubleInt32x2_a10 = 0.0;
 int passStruct9BytesPackedMixedx10DoubleInt32x2_a11 = 0;
 int passStruct9BytesPackedMixedx10DoubleInt32x2_a12 = 0;
@@ -6682,7 +6775,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct5BytesPackedMixed passStruct5BytesPackedMixed_a0 =
-    Struct5BytesPackedMixed();
+    Pointer<Struct5BytesPackedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct5BytesPackedMixedResult = 0.0;
@@ -6733,7 +6826,7 @@
 // Global variables to be able to test inputs after callback returned.
 StructNestedAlignmentStruct5BytesPackedMixed
     passStructNestedAlignmentStruct5BytesPackedMixed_a0 =
-    StructNestedAlignmentStruct5BytesPackedMixed();
+    Pointer<StructNestedAlignmentStruct5BytesPackedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructNestedAlignmentStruct5BytesPackedMixedResult = 0.0;
@@ -6788,7 +6881,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct6BytesInlineArrayInt passStruct6BytesInlineArrayInt_a0 =
-    Struct6BytesInlineArrayInt();
+    Pointer<Struct6BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct6BytesInlineArrayIntResult = 0.0;
@@ -6840,7 +6933,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct15BytesInlineArrayMixed passStruct15BytesInlineArrayMixed_a0 =
-    Struct15BytesInlineArrayMixed();
+    Pointer<Struct15BytesInlineArrayMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct15BytesInlineArrayMixedResult = 0.0;
@@ -6902,16 +6995,26 @@
     Union4BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Union4BytesMixed passUnion4BytesMixedx10_a0 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a1 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a2 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a3 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a4 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a5 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a6 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a7 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a8 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a9 = Union4BytesMixed();
+Union4BytesMixed passUnion4BytesMixedx10_a0 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a1 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a2 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a3 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a4 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a5 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a6 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a7 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a8 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a9 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion4BytesMixedx10Result = 0.0;
@@ -6998,25 +7101,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a0 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a1 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a2 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a3 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a4 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a5 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a6 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a7 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a8 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a9 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion8BytesNestedFloatx10Result = 0.0;
@@ -7102,16 +7205,26 @@
     Union9BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a0 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a1 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a2 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a3 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a4 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a5 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a6 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a7 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a8 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a9 = Union9BytesNestedInt();
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a0 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a1 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a2 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a3 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a4 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a5 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a6 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a7 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a8 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a9 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion9BytesNestedIntx10Result = 0.0;
@@ -7219,34 +7332,34 @@
 // Global variables to be able to test inputs after callback returned.
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a0 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a1 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a2 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a3 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a4 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a5 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a6 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a7 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a8 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a9 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion16BytesNestedInlineArrayFloatx10Result = 0.0;
@@ -7364,25 +7477,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a0 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a1 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a2 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a3 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a4 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a5 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a6 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a7 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a8 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a9 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion16BytesNestedFloatx10Result = 0.0;
@@ -9820,7 +9933,8 @@
     Struct8BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesInt returnUnion9BytesNestedInt_a0 = Struct8BytesInt();
+Struct8BytesInt returnUnion9BytesNestedInt_a0 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Union9BytesNestedInt> returnUnion9BytesNestedIntResultPointer = nullptr;
@@ -9874,7 +9988,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat returnUnion16BytesNestedFloat_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Union16BytesNestedFloat> returnUnion16BytesNestedFloatResultPointer =
@@ -9928,10 +10042,12 @@
     Struct1ByteInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct1ByteInt returnStructArgumentStruct1ByteInt_a0 = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentStruct1ByteInt_a0 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
-Struct1ByteInt returnStructArgumentStruct1ByteIntResult = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentStruct1ByteIntResult =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 Struct1ByteInt returnStructArgumentStruct1ByteIntCalculateResult() {
   Struct1ByteInt result = returnStructArgumentStruct1ByteInt_a0;
@@ -9982,11 +10098,12 @@
 int returnStructArgumentInt32x8Struct1ByteInt_a5 = 0;
 int returnStructArgumentInt32x8Struct1ByteInt_a6 = 0;
 int returnStructArgumentInt32x8Struct1ByteInt_a7 = 0;
-Struct1ByteInt returnStructArgumentInt32x8Struct1ByteInt_a8 = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentInt32x8Struct1ByteInt_a8 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct1ByteInt returnStructArgumentInt32x8Struct1ByteIntResult =
-    Struct1ByteInt();
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 Struct1ByteInt returnStructArgumentInt32x8Struct1ByteIntCalculateResult() {
   Struct1ByteInt result = returnStructArgumentInt32x8Struct1ByteInt_a8;
@@ -10042,12 +10159,12 @@
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloat_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloatResult =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloatCalculateResult() {
@@ -10098,12 +10215,12 @@
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32_a0 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32Result =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32CalculateResult() {
@@ -10161,12 +10278,12 @@
 int returnStructArgumentInt32x8Struct20BytesHomogeneou_a7 = 0;
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneou_a8 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneouResult =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneouCalculateResult() {
@@ -10233,12 +10350,12 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesInlineArrayInt returnStructArgumentStruct8BytesInlineArrayInt_a0 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct8BytesInlineArrayInt
     returnStructArgumentStruct8BytesInlineArrayIntResult =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 Struct8BytesInlineArrayInt
     returnStructArgumentStruct8BytesInlineArrayIntCalculateResult() {
@@ -10288,12 +10405,12 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneous_a0 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneousResult =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneousCalculateResult() {
@@ -10344,12 +10461,12 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneous_a0 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneousResult =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneousCalculateResult() {
@@ -10398,11 +10515,11 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesMixed3 returnStructArgumentStructStruct16BytesMixed3_a0 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct16BytesMixed3 returnStructArgumentStructStruct16BytesMixed3Result =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 StructStruct16BytesMixed3
     returnStructArgumentStructStruct16BytesMixed3CalculateResult() {
@@ -10619,9 +10736,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedInt_a0 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedInt_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedInt> returnStruct8BytesNestedIntResultPointer =
@@ -10678,8 +10795,10 @@
     Struct4BytesFloat, Struct4BytesFloat);
 
 // Global variables to be able to test inputs after callback returned.
-Struct4BytesFloat returnStruct8BytesNestedFloat_a0 = Struct4BytesFloat();
-Struct4BytesFloat returnStruct8BytesNestedFloat_a1 = Struct4BytesFloat();
+Struct4BytesFloat returnStruct8BytesNestedFloat_a0 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
+Struct4BytesFloat returnStruct8BytesNestedFloat_a1 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedFloat> returnStruct8BytesNestedFloatResultPointer =
@@ -10734,7 +10853,8 @@
     Struct4BytesFloat, Float);
 
 // Global variables to be able to test inputs after callback returned.
-Struct4BytesFloat returnStruct8BytesNestedFloat2_a0 = Struct4BytesFloat();
+Struct4BytesFloat returnStruct8BytesNestedFloat2_a0 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 double returnStruct8BytesNestedFloat2_a1 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -10792,8 +10912,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedMixed_a0 =
-    Struct4BytesHomogeneousInt16();
-Struct4BytesFloat returnStruct8BytesNestedMixed_a1 = Struct4BytesFloat();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
+Struct4BytesFloat returnStruct8BytesNestedMixed_a1 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedMixed> returnStruct8BytesNestedMixedResultPointer =
@@ -10849,8 +10970,10 @@
     Struct8BytesNestedInt, Struct8BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesNestedInt returnStruct16BytesNestedInt_a0 = Struct8BytesNestedInt();
-Struct8BytesNestedInt returnStruct16BytesNestedInt_a1 = Struct8BytesNestedInt();
+Struct8BytesNestedInt returnStruct16BytesNestedInt_a0 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt returnStruct16BytesNestedInt_a1 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct16BytesNestedInt> returnStruct16BytesNestedIntResultPointer =
@@ -10912,9 +11035,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesNestedInt returnStruct32BytesNestedInt_a0 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 Struct16BytesNestedInt returnStruct32BytesNestedInt_a1 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct32BytesNestedInt> returnStruct32BytesNestedIntResultPointer =
@@ -10985,9 +11108,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt16 returnStructNestedIntStructAlignmentInt16_a0 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 StructAlignmentInt16 returnStructNestedIntStructAlignmentInt16_a1 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt16>
@@ -11050,9 +11173,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt32 returnStructNestedIntStructAlignmentInt32_a0 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 StructAlignmentInt32 returnStructNestedIntStructAlignmentInt32_a1 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt32>
@@ -11115,9 +11238,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt64 returnStructNestedIntStructAlignmentInt64_a0 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 StructAlignmentInt64 returnStructNestedIntStructAlignmentInt64_a1 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt64>
@@ -11181,9 +11304,9 @@
 // Global variables to be able to test inputs after callback returned.
 int returnStructNestedIrregularEvenBigger_a0 = 0;
 StructNestedIrregularBigger returnStructNestedIrregularEvenBigger_a1 =
-    StructNestedIrregularBigger();
+    Pointer<StructNestedIrregularBigger>.fromAddress(0).ref;
 StructNestedIrregularBigger returnStructNestedIrregularEvenBigger_a2 =
-    StructNestedIrregularBigger();
+    Pointer<StructNestedIrregularBigger>.fromAddress(0).ref;
 double returnStructNestedIrregularEvenBigger_a3 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
diff --git a/tests/ffi/function_callbacks_structs_by_value_test.dart b/tests/ffi/function_callbacks_structs_by_value_test.dart
index d7021b3..be78dc5 100644
--- a/tests/ffi/function_callbacks_structs_by_value_test.dart
+++ b/tests/ffi/function_callbacks_structs_by_value_test.dart
@@ -72,7 +72,8 @@
     Struct20BytesHomogeneousInt32 Function(int recursionCounter,
         Struct20BytesHomogeneousInt32, Pointer)>("PassStructRecursive");
 
-Struct8BytesNestedInt typedDataBackedStruct = Struct8BytesNestedInt();
+Struct8BytesNestedInt typedDataBackedStruct =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 bool typedDataBackedStructSet = false;
 void _receiveStructByValue(Struct8BytesNestedInt struct) {
   typedDataBackedStruct = struct;
diff --git a/tests/ffi/generator/structs_by_value_tests_generator.dart b/tests/ffi/generator/structs_by_value_tests_generator.dart
index 9063cb2..03df491 100644
--- a/tests/ffi/generator/structs_by_value_tests_generator.dart
+++ b/tests/ffi/generator/structs_by_value_tests_generator.dart
@@ -268,7 +268,7 @@
         if (structsAsPointers) {
           return "Pointer<${dartType}> ${variableName}Pointer = nullptr;\n";
         } else {
-          return "${dartType} ${variableName} = ${dartType}();\n";
+          return "${dartType} ${variableName} = Pointer<${dartType}>.fromAddress(0).ref;\n";
         }
     }
 
diff --git a/tests/ffi/regress_39063_test.dart b/tests/ffi/regress_39063_test.dart
index 52dca18..b436fdb 100644
--- a/tests/ffi/regress_39063_test.dart
+++ b/tests/ffi/regress_39063_test.dart
@@ -9,8 +9,6 @@
 
 import "dart:ffi";
 
-import "package:expect/expect.dart";
-
 import "dylib_utils.dart";
 
 typedef VigesimalOp = double Function(
diff --git a/tests/ffi/vmspecific_function_test.dart b/tests/ffi/vmspecific_function_test.dart
index 00ea922..ef617b7 100644
--- a/tests/ffi/vmspecific_function_test.dart
+++ b/tests/ffi/vmspecific_function_test.dart
@@ -17,9 +17,6 @@
 
 import 'dylib_utils.dart';
 
-import "package:ffi/ffi.dart";
-import "package:expect/expect.dart";
-
 void main() {
   for (int i = 0; i < 100; ++i) {
     testLookupFunctionPointerNativeType();
diff --git a/tests/ffi/vmspecific_highmem_32bit_test.dart b/tests/ffi/vmspecific_highmem_32bit_test.dart
index eeee5fa..97d7ce3 100644
--- a/tests/ffi/vmspecific_highmem_32bit_test.dart
+++ b/tests/ffi/vmspecific_highmem_32bit_test.dart
@@ -4,7 +4,6 @@
 
 import 'dart:ffi';
 import 'dart:io';
-import 'dart:typed_data';
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/ffi/vmspecific_leaf_call_test.dart b/tests/ffi/vmspecific_leaf_call_test.dart
index 3d05173..9c723bb 100644
--- a/tests/ffi/vmspecific_leaf_call_test.dart
+++ b/tests/ffi/vmspecific_leaf_call_test.dart
@@ -9,29 +9,30 @@
 
 import 'package:expect/expect.dart';
 
-import 'dylib_utils.dart';
-import 'ffi_test_helpers.dart';
 import 'callback_tests_utils.dart';
+import 'dylib_utils.dart';
 
 DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");
 
 testLeafCall() {
   // Note: This test currently fails on Windows AOT: https://dartbug.com/40579
   // Regular calls should transition generated -> native.
-  final isThreadInGenerated = ffiTestFunctions.lookupFunction<
-      Int8 Function(), int Function()>("IsThreadInGenerated");
+  final isThreadInGenerated = ffiTestFunctions
+      .lookupFunction<Int8 Function(), int Function()>("IsThreadInGenerated");
   Expect.equals(0, isThreadInGenerated());
   // Leaf calls should remain in generated state.
-  final isThreadInGeneratedLeaf = ffiTestFunctions.lookupFunction<
-      Int8 Function(), int Function()>("IsThreadInGenerated", isLeaf: true);
+  final isThreadInGeneratedLeaf = ffiTestFunctions
+      .lookupFunction<Int8 Function(), int Function()>("IsThreadInGenerated",
+          isLeaf: true);
   Expect.equals(1, isThreadInGeneratedLeaf());
 }
 
 testLeafCallApi() {
   // Note: This will only crash as expected in debug build mode. In other modes
   // it's effectively skip.
-  final f = ffiTestFunctions.lookupFunction<
-      Void Function(), void Function()>("TestLeafCallApi", isLeaf: true);
+  final f = ffiTestFunctions.lookupFunction<Void Function(), void Function()>(
+      "TestLeafCallApi",
+      isLeaf: true);
   // Calling Dart_.. API is unsafe from leaf calls since we explicitly haven't
   // made the generated -> native transition.
   f();
@@ -45,7 +46,8 @@
   // Note: This will only crash as expected in debug build mode. In other modes
   // it's effectively skip.
   CallbackTest("CallbackLeaf", Pointer.fromFunction<Void Function()>(nop),
-      isLeaf:true).run();
+          isLeaf: true)
+      .run();
 }
 
 main() {
diff --git a/tests/ffi_2/ffi_2.status b/tests/ffi_2/ffi_2.status
index c54ce09..5335837 100644
--- a/tests/ffi_2/ffi_2.status
+++ b/tests/ffi_2/ffi_2.status
@@ -2,6 +2,9 @@
 # for details. All rights reserved. Use of this source code is governed by a
 # BSD-style license that can be found in the LICENSE file.
 
+function_callbacks_structs_by_value_test: Pass, Slow # https://dartbug.com/47304 https://dartbug.com/45007
+function_structs_by_value_generated_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
+
 [ $builder_tag == msan ]
 vmspecific_handle_test: Skip # https://dartbug.com/42314
 
@@ -14,9 +17,6 @@
 [ $system == android ]
 *: Pass, Slow # https://github.com/dart-lang/sdk/issues/38489
 
-[ $arch == arm && $system == linux ]
-function_callbacks_structs_by_value_test: Slow # QEMU https://dartbug.com/45007
-
 [ $compiler != dart2analyzer && $compiler != fasta && $runtime != dart_precompiled && $runtime != vm ]
 *: SkipByDesign # FFI is a VM-only feature. (This test suite is part of the default set.)
 
diff --git a/tests/ffi_2/function_callbacks_structs_by_value_generated_test.dart b/tests/ffi_2/function_callbacks_structs_by_value_generated_test.dart
index 5eb0a63..dd0e719 100644
--- a/tests/ffi_2/function_callbacks_structs_by_value_generated_test.dart
+++ b/tests/ffi_2/function_callbacks_structs_by_value_generated_test.dart
@@ -617,16 +617,26 @@
     Struct1ByteInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct1ByteInt passStruct1ByteIntx10_a0 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a1 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a2 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a3 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a4 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a5 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a6 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a7 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a8 = Struct1ByteInt();
-Struct1ByteInt passStruct1ByteIntx10_a9 = Struct1ByteInt();
+Struct1ByteInt passStruct1ByteIntx10_a0 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a1 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a2 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a3 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a4 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a5 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a6 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a7 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a8 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
+Struct1ByteInt passStruct1ByteIntx10_a9 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct1ByteIntx10Result = 0;
@@ -718,25 +728,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a0 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a1 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a2 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a3 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a4 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a5 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a6 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a7 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a8 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct3BytesHomogeneousUint8 passStruct3BytesHomogeneousUint8x10_a9 =
-    Struct3BytesHomogeneousUint8();
+    Pointer<Struct3BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesHomogeneousUint8x10Result = 0;
@@ -848,25 +858,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a0 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a1 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a2 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a3 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a4 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a5 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a6 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a7 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a8 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 Struct3BytesInt2ByteAligned passStruct3BytesInt2ByteAlignedx10_a9 =
-    Struct3BytesInt2ByteAligned();
+    Pointer<Struct3BytesInt2ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesInt2ByteAlignedx10Result = 0;
@@ -969,25 +979,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a0 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a2 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a3 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a4 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a5 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a6 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a7 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a8 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 passStruct4BytesHomogeneousInt16x10_a9 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct4BytesHomogeneousInt16x10Result = 0;
@@ -1089,25 +1099,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a0 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a1 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a2 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a3 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a4 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a5 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a6 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a7 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a8 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct7BytesHomogeneousUint8 passStruct7BytesHomogeneousUint8x10_a9 =
-    Struct7BytesHomogeneousUint8();
+    Pointer<Struct7BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct7BytesHomogeneousUint8x10Result = 0;
@@ -1259,25 +1269,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a0 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a1 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a2 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a3 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a4 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a5 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a6 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a7 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a8 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 Struct7BytesInt4ByteAligned passStruct7BytesInt4ByteAlignedx10_a9 =
-    Struct7BytesInt4ByteAligned();
+    Pointer<Struct7BytesInt4ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct7BytesInt4ByteAlignedx10Result = 0;
@@ -1389,16 +1399,26 @@
     Struct8BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesInt passStruct8BytesIntx10_a0 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a1 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a2 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a3 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a4 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a5 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a6 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a7 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a8 = Struct8BytesInt();
-Struct8BytesInt passStruct8BytesIntx10_a9 = Struct8BytesInt();
+Struct8BytesInt passStruct8BytesIntx10_a0 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a1 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a2 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a3 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a4 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a5 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a6 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a7 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a8 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
+Struct8BytesInt passStruct8BytesIntx10_a9 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesIntx10Result = 0;
@@ -1510,25 +1530,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a1 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a2 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a3 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a4 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a5 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a6 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a7 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a8 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat passStruct8BytesHomogeneousFloatx10_a9 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesHomogeneousFloatx10Result = 0.0;
@@ -1629,16 +1649,26 @@
     Struct8BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesMixed passStruct8BytesMixedx10_a0 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a1 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a2 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a3 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a4 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a5 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a6 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a7 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a8 = Struct8BytesMixed();
-Struct8BytesMixed passStruct8BytesMixedx10_a9 = Struct8BytesMixed();
+Struct8BytesMixed passStruct8BytesMixedx10_a0 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a1 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a2 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a3 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a4 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a5 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a6 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a7 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a8 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
+Struct8BytesMixed passStruct8BytesMixedx10_a9 =
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesMixedx10Result = 0.0;
@@ -1750,25 +1780,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a0 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a1 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a2 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a3 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a4 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a5 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a6 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a7 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a8 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct9BytesHomogeneousUint8 passStruct9BytesHomogeneousUint8x10_a9 =
-    Struct9BytesHomogeneousUint8();
+    Pointer<Struct9BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct9BytesHomogeneousUint8x10Result = 0;
@@ -1943,25 +1973,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a0 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a1 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a2 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a3 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a4 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a5 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a6 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a7 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a8 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 Struct9BytesInt4Or8ByteAligned passStruct9BytesInt4Or8ByteAlignedx10_a9 =
-    Struct9BytesInt4Or8ByteAligned();
+    Pointer<Struct9BytesInt4Or8ByteAligned>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct9BytesInt4Or8ByteAlignedx10Result = 0;
@@ -2062,17 +2092,17 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a0 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a1 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a2 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a3 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a4 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct12BytesHomogeneousFloat passStruct12BytesHomogeneousFloatx6_a5 =
-    Struct12BytesHomogeneousFloat();
+    Pointer<Struct12BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct12BytesHomogeneousFloatx6Result = 0.0;
@@ -2160,15 +2190,15 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a0 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a1 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a2 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a3 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 Struct16BytesHomogeneousFloat passStruct16BytesHomogeneousFloatx5_a4 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesHomogeneousFloatx5Result = 0.0;
@@ -2260,16 +2290,26 @@
     Struct16BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Struct16BytesMixed passStruct16BytesMixedx10_a0 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a1 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a2 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a3 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a4 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a5 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a6 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a7 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a8 = Struct16BytesMixed();
-Struct16BytesMixed passStruct16BytesMixedx10_a9 = Struct16BytesMixed();
+Struct16BytesMixed passStruct16BytesMixedx10_a0 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a1 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a2 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a3 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a4 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a5 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a6 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a7 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a8 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
+Struct16BytesMixed passStruct16BytesMixedx10_a9 =
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesMixedx10Result = 0.0;
@@ -2372,16 +2412,26 @@
     Struct16BytesMixed2);
 
 // Global variables to be able to test inputs after callback returned.
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a0 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a1 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a2 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a3 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a4 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a5 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a6 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a7 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a8 = Struct16BytesMixed2();
-Struct16BytesMixed2 passStruct16BytesMixed2x10_a9 = Struct16BytesMixed2();
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a0 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a1 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a2 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a3 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a4 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a5 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a6 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a7 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a8 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
+Struct16BytesMixed2 passStruct16BytesMixed2x10_a9 =
+    Pointer<Struct16BytesMixed2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct16BytesMixed2x10Result = 0.0;
@@ -2504,16 +2554,26 @@
     Struct17BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct17BytesInt passStruct17BytesIntx10_a0 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a1 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a2 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a3 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a4 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a5 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a6 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a7 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a8 = Struct17BytesInt();
-Struct17BytesInt passStruct17BytesIntx10_a9 = Struct17BytesInt();
+Struct17BytesInt passStruct17BytesIntx10_a0 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a1 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a2 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a3 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a4 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a5 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a6 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a7 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a8 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
+Struct17BytesInt passStruct17BytesIntx10_a9 =
+    Pointer<Struct17BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct17BytesIntx10Result = 0;
@@ -2625,25 +2685,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a0 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a1 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a2 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a3 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a4 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a5 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a6 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a7 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a8 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 Struct19BytesHomogeneousUint8 passStruct19BytesHomogeneousUint8x10_a9 =
-    Struct19BytesHomogeneousUint8();
+    Pointer<Struct19BytesHomogeneousUint8>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct19BytesHomogeneousUint8x10Result = 0;
@@ -2917,25 +2977,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a0 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a1 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a2 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a3 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a4 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a5 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a6 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a7 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a8 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 Struct20BytesHomogeneousInt32 passStruct20BytesHomogeneousInt32x10_a9 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct20BytesHomogeneousInt32x10Result = 0;
@@ -3061,7 +3121,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousFloat passStruct20BytesHomogeneousFloat_a0 =
-    Struct20BytesHomogeneousFloat();
+    Pointer<Struct20BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct20BytesHomogeneousFloatResult = 0.0;
@@ -3122,15 +3182,15 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a0 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a1 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a2 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a3 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct32BytesHomogeneousDouble passStruct32BytesHomogeneousDoublex5_a4 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct32BytesHomogeneousDoublex5Result = 0.0;
@@ -3214,7 +3274,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct40BytesHomogeneousDouble passStruct40BytesHomogeneousDouble_a0 =
-    Struct40BytesHomogeneousDouble();
+    Pointer<Struct40BytesHomogeneousDouble>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct40BytesHomogeneousDoubleResult = 0.0;
@@ -3271,7 +3331,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct1024BytesHomogeneousUint64 passStruct1024BytesHomogeneousUint64_a0 =
-    Struct1024BytesHomogeneousUint64();
+    Pointer<Struct1024BytesHomogeneousUint64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct1024BytesHomogeneousUint64Result = 0;
@@ -3462,19 +3522,19 @@
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a0 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a1 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a2 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a3 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a4 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a5 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a6 = 0.0;
 Struct16BytesHomogeneousFloat
     passFloatStruct16BytesHomogeneousFloatFloatStruct1_a7 =
-    Struct16BytesHomogeneousFloat();
+    Pointer<Struct16BytesHomogeneousFloat>.fromAddress(0).ref;
 double passFloatStruct16BytesHomogeneousFloatFloatStruct1_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3580,19 +3640,19 @@
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a0 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a1 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a2 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a3 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a4 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a5 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a6 = 0.0;
 Struct32BytesHomogeneousDouble
     passFloatStruct32BytesHomogeneousDoubleFloatStruct_a7 =
-    Struct32BytesHomogeneousDouble();
+    Pointer<Struct32BytesHomogeneousDouble>.fromAddress(0).ref;
 double passFloatStruct32BytesHomogeneousDoubleFloatStruct_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3689,16 +3749,16 @@
 // Global variables to be able to test inputs after callback returned.
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a0 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a1 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a2 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a3 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a4 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a5 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a6 = 0;
 Struct16BytesMixed passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passInt8Struct16BytesMixedInt8Struct16BytesMixedIn_a8 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3805,13 +3865,13 @@
 double passDoublex6Struct16BytesMixedx4Int32_a4 = 0.0;
 double passDoublex6Struct16BytesMixedx4Int32_a5 = 0.0;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a6 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a8 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passDoublex6Struct16BytesMixedx4Int32_a9 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 int passDoublex6Struct16BytesMixedx4Int32_a10 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -3916,13 +3976,13 @@
 int passInt32x4Struct16BytesMixedx4Double_a2 = 0;
 int passInt32x4Struct16BytesMixedx4Double_a3 = 0;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a4 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a5 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a6 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 Struct16BytesMixed passInt32x4Struct16BytesMixedx4Double_a7 =
-    Struct16BytesMixed();
+    Pointer<Struct16BytesMixed>.fromAddress(0).ref;
 double passInt32x4Struct16BytesMixedx4Double_a8 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -4011,13 +4071,13 @@
 // Global variables to be able to test inputs after callback returned.
 Struct40BytesHomogeneousDouble
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a0 =
-    Struct40BytesHomogeneousDouble();
+    Pointer<Struct40BytesHomogeneousDouble>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct8BytesHomogeneousFloat
     passStruct40BytesHomogeneousDoubleStruct4BytesHomo_a2 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct40BytesHomogeneousDoubleStruct4BytesHomoResult = 0.0;
@@ -4146,37 +4206,37 @@
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a16 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a17 = 0;
 Struct1ByteInt passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a18 =
-    Struct1ByteInt();
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a19 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a20 = 0;
 Struct4BytesHomogeneousInt16
     passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a21 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a22 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a23 = 0;
 Struct8BytesInt passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a24 =
-    Struct8BytesInt();
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a25 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a26 = 0;
 Struct8BytesHomogeneousFloat
     passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a27 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a28 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a29 = 0;
 Struct8BytesMixed passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a30 =
-    Struct8BytesMixed();
+    Pointer<Struct8BytesMixed>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a31 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a32 = 0;
 StructAlignmentInt16 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a33 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a34 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a35 = 0;
 StructAlignmentInt32 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a36 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a37 = 0;
 int passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a38 = 0;
 StructAlignmentInt64 passInt32x8Doublex8Int64Int8Struct1ByteIntInt64Int_a39 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passInt32x8Doublex8Int64Int8Struct1ByteIntInt64IntResult = 0.0;
@@ -4361,7 +4421,8 @@
 typedef PassStructAlignmentInt16Type = Int64 Function(StructAlignmentInt16);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt16 passStructAlignmentInt16_a0 = StructAlignmentInt16();
+StructAlignmentInt16 passStructAlignmentInt16_a0 =
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt16Result = 0;
@@ -4414,7 +4475,8 @@
 typedef PassStructAlignmentInt32Type = Int64 Function(StructAlignmentInt32);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt32 passStructAlignmentInt32_a0 = StructAlignmentInt32();
+StructAlignmentInt32 passStructAlignmentInt32_a0 =
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt32Result = 0;
@@ -4467,7 +4529,8 @@
 typedef PassStructAlignmentInt64Type = Int64 Function(StructAlignmentInt64);
 
 // Global variables to be able to test inputs after callback returned.
-StructAlignmentInt64 passStructAlignmentInt64_a0 = StructAlignmentInt64();
+StructAlignmentInt64 passStructAlignmentInt64_a0 =
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructAlignmentInt64Result = 0;
@@ -4530,16 +4593,26 @@
     Struct8BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a0 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a1 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a2 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a3 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a4 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a5 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a6 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a7 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a8 = Struct8BytesNestedInt();
-Struct8BytesNestedInt passStruct8BytesNestedIntx10_a9 = Struct8BytesNestedInt();
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a0 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a1 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a2 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a3 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a4 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a5 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a6 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a7 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a8 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt passStruct8BytesNestedIntx10_a9 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesNestedIntx10Result = 0;
@@ -4661,25 +4734,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a0 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a1 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a2 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a3 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a4 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a5 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a6 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a7 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a8 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 Struct8BytesNestedFloat passStruct8BytesNestedFloatx10_a9 =
-    Struct8BytesNestedFloat();
+    Pointer<Struct8BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedFloatx10Result = 0.0;
@@ -4781,25 +4854,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a0 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a1 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a2 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a3 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a4 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a5 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a6 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a7 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a8 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 Struct8BytesNestedFloat2 passStruct8BytesNestedFloat2x10_a9 =
-    Struct8BytesNestedFloat2();
+    Pointer<Struct8BytesNestedFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedFloat2x10Result = 0.0;
@@ -4903,25 +4976,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a0 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a1 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a2 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a3 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a4 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a5 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a6 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a7 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a8 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 Struct8BytesNestedMixed passStruct8BytesNestedMixedx10_a9 =
-    Struct8BytesNestedMixed();
+    Pointer<Struct8BytesNestedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct8BytesNestedMixedx10Result = 0.0;
@@ -5024,9 +5097,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesNestedInt passStruct16BytesNestedIntx2_a0 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 Struct16BytesNestedInt passStruct16BytesNestedIntx2_a1 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct16BytesNestedIntx2Result = 0;
@@ -5096,9 +5169,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct32BytesNestedInt passStruct32BytesNestedIntx2_a0 =
-    Struct32BytesNestedInt();
+    Pointer<Struct32BytesNestedInt>.fromAddress(0).ref;
 Struct32BytesNestedInt passStruct32BytesNestedIntx2_a1 =
-    Struct32BytesNestedInt();
+    Pointer<Struct32BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct32BytesNestedIntx2Result = 0;
@@ -5184,7 +5257,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt16 passStructNestedIntStructAlignmentInt16_a0 =
-    StructNestedIntStructAlignmentInt16();
+    Pointer<StructNestedIntStructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt16Result = 0;
@@ -5244,7 +5317,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt32 passStructNestedIntStructAlignmentInt32_a0 =
-    StructNestedIntStructAlignmentInt32();
+    Pointer<StructNestedIntStructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt32Result = 0;
@@ -5304,7 +5377,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIntStructAlignmentInt64 passStructNestedIntStructAlignmentInt64_a0 =
-    StructNestedIntStructAlignmentInt64();
+    Pointer<StructNestedIntStructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructNestedIntStructAlignmentInt64Result = 0;
@@ -5367,13 +5440,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a0 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a1 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a2 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 StructNestedIrregularEvenBigger passStructNestedIrregularEvenBiggerx4_a3 =
-    StructNestedIrregularEvenBigger();
+    Pointer<StructNestedIrregularEvenBigger>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructNestedIrregularEvenBiggerx4Result = 0.0;
@@ -5572,13 +5645,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a0 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a1 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a2 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 Struct8BytesInlineArrayInt passStruct8BytesInlineArrayIntx4_a3 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesInlineArrayIntx4Result = 0;
@@ -5672,13 +5745,13 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a0 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a1 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a2 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 StructInlineArrayIrregular passStructInlineArrayIrregularx4_a3 =
-    StructInlineArrayIrregular();
+    Pointer<StructInlineArrayIrregular>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructInlineArrayIrregularx4Result = 0;
@@ -5757,7 +5830,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructInlineArray100Bytes passStructInlineArray100Bytes_a0 =
-    StructInlineArray100Bytes();
+    Pointer<StructInlineArray100Bytes>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStructInlineArray100BytesResult = 0;
@@ -5914,19 +5987,19 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a0 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a1 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a2 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a3 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 StructStruct16BytesHomogeneousFloat2
     passStructStruct16BytesHomogeneousFloat2x5_a4 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct16BytesHomogeneousFloat2x5Result = 0.0;
@@ -6015,19 +6088,19 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a0 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a1 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a2 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a3 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 StructStruct32BytesHomogeneousDouble2
     passStructStruct32BytesHomogeneousDouble2x5_a4 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct32BytesHomogeneousDouble2x5Result = 0.0;
@@ -6120,25 +6193,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a0 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a1 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a2 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a3 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a4 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a5 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a6 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a7 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a8 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 StructStruct16BytesMixed3 passStructStruct16BytesMixed3x10_a9 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructStruct16BytesMixed3x10Result = 0.0;
@@ -6282,15 +6355,15 @@
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a0 = 0;
 Struct32BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a1 =
-    Struct32BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct32BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a2 = 0;
 Struct8BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a3 =
-    Struct8BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct8BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a4 = 0;
 Struct8BytesInlineArrayMultiDimensionalInt
     passUint8Struct32BytesInlineArrayMultiDimensionalI_a5 =
-    Struct8BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct8BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct32BytesInlineArrayMultiDimensionalI_a6 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -6446,7 +6519,7 @@
 int passUint8Struct4BytesInlineArrayMultiDimensionalIn_a0 = 0;
 Struct4BytesInlineArrayMultiDimensionalInt
     passUint8Struct4BytesInlineArrayMultiDimensionalIn_a1 =
-    Struct4BytesInlineArrayMultiDimensionalInt();
+    Pointer<Struct4BytesInlineArrayMultiDimensionalInt>.fromAddress(0).ref;
 int passUint8Struct4BytesInlineArrayMultiDimensionalIn_a2 = 0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -6520,16 +6593,26 @@
     Struct3BytesPackedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a0 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a1 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a2 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a3 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a4 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a5 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a6 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a7 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a8 = Struct3BytesPackedInt();
-Struct3BytesPackedInt passStruct3BytesPackedIntx10_a9 = Struct3BytesPackedInt();
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a0 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a1 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a2 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a3 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a4 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a5 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a6 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a7 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a8 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
+Struct3BytesPackedInt passStruct3BytesPackedIntx10_a9 =
+    Pointer<Struct3BytesPackedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct3BytesPackedIntx10Result = 0;
@@ -6629,16 +6712,26 @@
     Struct8BytesPackedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a0 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a1 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a2 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a3 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a4 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a5 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a6 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a7 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a8 = Struct8BytesPackedInt();
-Struct8BytesPackedInt passStruct8BytesPackedIntx10_a9 = Struct8BytesPackedInt();
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a0 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a1 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a2 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a3 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a4 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a5 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a6 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a7 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a8 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
+Struct8BytesPackedInt passStruct8BytesPackedIntx10_a9 =
+    Pointer<Struct8BytesPackedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 int passStruct8BytesPackedIntx10Result = 0;
@@ -6772,25 +6865,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a0 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a1 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a2 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a3 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a4 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a5 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a6 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a7 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a8 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 Struct9BytesPackedMixed passStruct9BytesPackedMixedx10DoubleInt32x2_a9 =
-    Struct9BytesPackedMixed();
+    Pointer<Struct9BytesPackedMixed>.fromAddress(0).ref;
 double passStruct9BytesPackedMixedx10DoubleInt32x2_a10 = 0.0;
 int passStruct9BytesPackedMixedx10DoubleInt32x2_a11 = 0;
 int passStruct9BytesPackedMixedx10DoubleInt32x2_a12 = 0;
@@ -6896,7 +6989,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct5BytesPackedMixed passStruct5BytesPackedMixed_a0 =
-    Struct5BytesPackedMixed();
+    Pointer<Struct5BytesPackedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct5BytesPackedMixedResult = 0.0;
@@ -6951,7 +7044,7 @@
 // Global variables to be able to test inputs after callback returned.
 StructNestedAlignmentStruct5BytesPackedMixed
     passStructNestedAlignmentStruct5BytesPackedMixed_a0 =
-    StructNestedAlignmentStruct5BytesPackedMixed();
+    Pointer<StructNestedAlignmentStruct5BytesPackedMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStructNestedAlignmentStruct5BytesPackedMixedResult = 0.0;
@@ -7010,7 +7103,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct6BytesInlineArrayInt passStruct6BytesInlineArrayInt_a0 =
-    Struct6BytesInlineArrayInt();
+    Pointer<Struct6BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct6BytesInlineArrayIntResult = 0.0;
@@ -7066,7 +7159,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct15BytesInlineArrayMixed passStruct15BytesInlineArrayMixed_a0 =
-    Struct15BytesInlineArrayMixed();
+    Pointer<Struct15BytesInlineArrayMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passStruct15BytesInlineArrayMixedResult = 0.0;
@@ -7132,16 +7225,26 @@
     Union4BytesMixed);
 
 // Global variables to be able to test inputs after callback returned.
-Union4BytesMixed passUnion4BytesMixedx10_a0 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a1 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a2 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a3 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a4 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a5 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a6 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a7 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a8 = Union4BytesMixed();
-Union4BytesMixed passUnion4BytesMixedx10_a9 = Union4BytesMixed();
+Union4BytesMixed passUnion4BytesMixedx10_a0 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a1 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a2 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a3 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a4 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a5 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a6 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a7 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a8 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
+Union4BytesMixed passUnion4BytesMixedx10_a9 =
+    Pointer<Union4BytesMixed>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion4BytesMixedx10Result = 0.0;
@@ -7232,25 +7335,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a0 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a1 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a2 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a3 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a4 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a5 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a6 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a7 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a8 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 Union8BytesNestedFloat passUnion8BytesNestedFloatx10_a9 =
-    Union8BytesNestedFloat();
+    Pointer<Union8BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion8BytesNestedFloatx10Result = 0.0;
@@ -7340,16 +7443,26 @@
     Union9BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a0 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a1 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a2 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a3 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a4 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a5 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a6 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a7 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a8 = Union9BytesNestedInt();
-Union9BytesNestedInt passUnion9BytesNestedIntx10_a9 = Union9BytesNestedInt();
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a0 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a1 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a2 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a3 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a4 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a5 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a6 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a7 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a8 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
+Union9BytesNestedInt passUnion9BytesNestedIntx10_a9 =
+    Pointer<Union9BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion9BytesNestedIntx10Result = 0.0;
@@ -7461,34 +7574,34 @@
 // Global variables to be able to test inputs after callback returned.
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a0 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a1 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a2 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a3 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a4 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a5 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a6 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a7 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a8 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 Union16BytesNestedInlineArrayFloat
     passUnion16BytesNestedInlineArrayFloatx10_a9 =
-    Union16BytesNestedInlineArrayFloat();
+    Pointer<Union16BytesNestedInlineArrayFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion16BytesNestedInlineArrayFloatx10Result = 0.0;
@@ -7610,25 +7723,25 @@
 
 // Global variables to be able to test inputs after callback returned.
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a0 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a1 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a2 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a3 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a4 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a5 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a6 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a7 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a8 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 Union16BytesNestedFloat passUnion16BytesNestedFloatx10_a9 =
-    Union16BytesNestedFloat();
+    Pointer<Union16BytesNestedFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 double passUnion16BytesNestedFloatx10Result = 0.0;
@@ -10178,7 +10291,8 @@
     Struct8BytesInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesInt returnUnion9BytesNestedInt_a0 = Struct8BytesInt();
+Struct8BytesInt returnUnion9BytesNestedInt_a0 =
+    Pointer<Struct8BytesInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Union9BytesNestedInt> returnUnion9BytesNestedIntResultPointer = nullptr;
@@ -10236,7 +10350,7 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat returnUnion16BytesNestedFloat_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Union16BytesNestedFloat> returnUnion16BytesNestedFloatResultPointer =
@@ -10294,10 +10408,12 @@
     Struct1ByteInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct1ByteInt returnStructArgumentStruct1ByteInt_a0 = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentStruct1ByteInt_a0 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
-Struct1ByteInt returnStructArgumentStruct1ByteIntResult = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentStruct1ByteIntResult =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 Struct1ByteInt returnStructArgumentStruct1ByteIntCalculateResult() {
   Struct1ByteInt result = returnStructArgumentStruct1ByteInt_a0;
@@ -10352,11 +10468,12 @@
 int returnStructArgumentInt32x8Struct1ByteInt_a5 = 0;
 int returnStructArgumentInt32x8Struct1ByteInt_a6 = 0;
 int returnStructArgumentInt32x8Struct1ByteInt_a7 = 0;
-Struct1ByteInt returnStructArgumentInt32x8Struct1ByteInt_a8 = Struct1ByteInt();
+Struct1ByteInt returnStructArgumentInt32x8Struct1ByteInt_a8 =
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct1ByteInt returnStructArgumentInt32x8Struct1ByteIntResult =
-    Struct1ByteInt();
+    Pointer<Struct1ByteInt>.fromAddress(0).ref;
 
 Struct1ByteInt returnStructArgumentInt32x8Struct1ByteIntCalculateResult() {
   Struct1ByteInt result = returnStructArgumentInt32x8Struct1ByteInt_a8;
@@ -10416,12 +10533,12 @@
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloat_a0 =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloatResult =
-    Struct8BytesHomogeneousFloat();
+    Pointer<Struct8BytesHomogeneousFloat>.fromAddress(0).ref;
 
 Struct8BytesHomogeneousFloat
     returnStructArgumentStruct8BytesHomogeneousFloatCalculateResult() {
@@ -10476,12 +10593,12 @@
 // Global variables to be able to test inputs after callback returned.
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32_a0 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32Result =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 Struct20BytesHomogeneousInt32
     returnStructArgumentStruct20BytesHomogeneousInt32CalculateResult() {
@@ -10543,12 +10660,12 @@
 int returnStructArgumentInt32x8Struct20BytesHomogeneou_a7 = 0;
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneou_a8 =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneouResult =
-    Struct20BytesHomogeneousInt32();
+    Pointer<Struct20BytesHomogeneousInt32>.fromAddress(0).ref;
 
 Struct20BytesHomogeneousInt32
     returnStructArgumentInt32x8Struct20BytesHomogeneouCalculateResult() {
@@ -10619,12 +10736,12 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct8BytesInlineArrayInt returnStructArgumentStruct8BytesInlineArrayInt_a0 =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Struct8BytesInlineArrayInt
     returnStructArgumentStruct8BytesInlineArrayIntResult =
-    Struct8BytesInlineArrayInt();
+    Pointer<Struct8BytesInlineArrayInt>.fromAddress(0).ref;
 
 Struct8BytesInlineArrayInt
     returnStructArgumentStruct8BytesInlineArrayIntCalculateResult() {
@@ -10678,12 +10795,12 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneous_a0 =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneousResult =
-    StructStruct16BytesHomogeneousFloat2();
+    Pointer<StructStruct16BytesHomogeneousFloat2>.fromAddress(0).ref;
 
 StructStruct16BytesHomogeneousFloat2
     returnStructArgumentStructStruct16BytesHomogeneousCalculateResult() {
@@ -10738,12 +10855,12 @@
 // Global variables to be able to test inputs after callback returned.
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneous_a0 =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneousResult =
-    StructStruct32BytesHomogeneousDouble2();
+    Pointer<StructStruct32BytesHomogeneousDouble2>.fromAddress(0).ref;
 
 StructStruct32BytesHomogeneousDouble2
     returnStructArgumentStructStruct32BytesHomogeneousCalculateResult() {
@@ -10796,11 +10913,11 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructStruct16BytesMixed3 returnStructArgumentStructStruct16BytesMixed3_a0 =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 StructStruct16BytesMixed3 returnStructArgumentStructStruct16BytesMixed3Result =
-    StructStruct16BytesMixed3();
+    Pointer<StructStruct16BytesMixed3>.fromAddress(0).ref;
 
 StructStruct16BytesMixed3
     returnStructArgumentStructStruct16BytesMixed3CalculateResult() {
@@ -11033,9 +11150,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedInt_a0 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedInt_a1 =
-    Struct4BytesHomogeneousInt16();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedInt> returnStruct8BytesNestedIntResultPointer =
@@ -11096,8 +11213,10 @@
     Struct4BytesFloat, Struct4BytesFloat);
 
 // Global variables to be able to test inputs after callback returned.
-Struct4BytesFloat returnStruct8BytesNestedFloat_a0 = Struct4BytesFloat();
-Struct4BytesFloat returnStruct8BytesNestedFloat_a1 = Struct4BytesFloat();
+Struct4BytesFloat returnStruct8BytesNestedFloat_a0 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
+Struct4BytesFloat returnStruct8BytesNestedFloat_a1 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedFloat> returnStruct8BytesNestedFloatResultPointer =
@@ -11156,7 +11275,8 @@
     Struct4BytesFloat, Float);
 
 // Global variables to be able to test inputs after callback returned.
-Struct4BytesFloat returnStruct8BytesNestedFloat2_a0 = Struct4BytesFloat();
+Struct4BytesFloat returnStruct8BytesNestedFloat2_a0 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 double returnStruct8BytesNestedFloat2_a1 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
@@ -11218,8 +11338,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct4BytesHomogeneousInt16 returnStruct8BytesNestedMixed_a0 =
-    Struct4BytesHomogeneousInt16();
-Struct4BytesFloat returnStruct8BytesNestedMixed_a1 = Struct4BytesFloat();
+    Pointer<Struct4BytesHomogeneousInt16>.fromAddress(0).ref;
+Struct4BytesFloat returnStruct8BytesNestedMixed_a1 =
+    Pointer<Struct4BytesFloat>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct8BytesNestedMixed> returnStruct8BytesNestedMixedResultPointer =
@@ -11279,8 +11400,10 @@
     Struct8BytesNestedInt, Struct8BytesNestedInt);
 
 // Global variables to be able to test inputs after callback returned.
-Struct8BytesNestedInt returnStruct16BytesNestedInt_a0 = Struct8BytesNestedInt();
-Struct8BytesNestedInt returnStruct16BytesNestedInt_a1 = Struct8BytesNestedInt();
+Struct8BytesNestedInt returnStruct16BytesNestedInt_a0 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
+Struct8BytesNestedInt returnStruct16BytesNestedInt_a1 =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct16BytesNestedInt> returnStruct16BytesNestedIntResultPointer =
@@ -11346,9 +11469,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 Struct16BytesNestedInt returnStruct32BytesNestedInt_a0 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 Struct16BytesNestedInt returnStruct32BytesNestedInt_a1 =
-    Struct16BytesNestedInt();
+    Pointer<Struct16BytesNestedInt>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<Struct32BytesNestedInt> returnStruct32BytesNestedIntResultPointer =
@@ -11423,9 +11546,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt16 returnStructNestedIntStructAlignmentInt16_a0 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 StructAlignmentInt16 returnStructNestedIntStructAlignmentInt16_a1 =
-    StructAlignmentInt16();
+    Pointer<StructAlignmentInt16>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt16>
@@ -11492,9 +11615,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt32 returnStructNestedIntStructAlignmentInt32_a0 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 StructAlignmentInt32 returnStructNestedIntStructAlignmentInt32_a1 =
-    StructAlignmentInt32();
+    Pointer<StructAlignmentInt32>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt32>
@@ -11561,9 +11684,9 @@
 
 // Global variables to be able to test inputs after callback returned.
 StructAlignmentInt64 returnStructNestedIntStructAlignmentInt64_a0 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 StructAlignmentInt64 returnStructNestedIntStructAlignmentInt64_a1 =
-    StructAlignmentInt64();
+    Pointer<StructAlignmentInt64>.fromAddress(0).ref;
 
 // Result variable also global, so we can delete it after the callback.
 Pointer<StructNestedIntStructAlignmentInt64>
@@ -11631,9 +11754,9 @@
 // Global variables to be able to test inputs after callback returned.
 int returnStructNestedIrregularEvenBigger_a0 = 0;
 StructNestedIrregularBigger returnStructNestedIrregularEvenBigger_a1 =
-    StructNestedIrregularBigger();
+    Pointer<StructNestedIrregularBigger>.fromAddress(0).ref;
 StructNestedIrregularBigger returnStructNestedIrregularEvenBigger_a2 =
-    StructNestedIrregularBigger();
+    Pointer<StructNestedIrregularBigger>.fromAddress(0).ref;
 double returnStructNestedIrregularEvenBigger_a3 = 0.0;
 
 // Result variable also global, so we can delete it after the callback.
diff --git a/tests/ffi_2/function_callbacks_structs_by_value_test.dart b/tests/ffi_2/function_callbacks_structs_by_value_test.dart
index 930da1e..4ecdbaf 100644
--- a/tests/ffi_2/function_callbacks_structs_by_value_test.dart
+++ b/tests/ffi_2/function_callbacks_structs_by_value_test.dart
@@ -74,7 +74,8 @@
     Struct20BytesHomogeneousInt32 Function(int recursionCounter,
         Struct20BytesHomogeneousInt32, Pointer)>("PassStructRecursive");
 
-Struct8BytesNestedInt typedDataBackedStruct = Struct8BytesNestedInt();
+Struct8BytesNestedInt typedDataBackedStruct =
+    Pointer<Struct8BytesNestedInt>.fromAddress(0).ref;
 bool typedDataBackedStructSet = false;
 void _receiveStructByValue(Struct8BytesNestedInt struct) {
   typedDataBackedStruct = struct;
diff --git a/tests/ffi_2/regress_39063_test.dart b/tests/ffi_2/regress_39063_test.dart
index ceadda3..e8c9570 100644
--- a/tests/ffi_2/regress_39063_test.dart
+++ b/tests/ffi_2/regress_39063_test.dart
@@ -11,8 +11,6 @@
 
 import "dart:ffi";
 
-import "package:expect/expect.dart";
-
 import "dylib_utils.dart";
 
 typedef VigesimalOp = double Function(
diff --git a/tests/ffi_2/vmspecific_function_test.dart b/tests/ffi_2/vmspecific_function_test.dart
index ca55317..ee78780 100644
--- a/tests/ffi_2/vmspecific_function_test.dart
+++ b/tests/ffi_2/vmspecific_function_test.dart
@@ -19,9 +19,6 @@
 
 import 'dylib_utils.dart';
 
-import "package:ffi/ffi.dart";
-import "package:expect/expect.dart";
-
 void main() {
   for (int i = 0; i < 100; ++i) {
     testLookupFunctionPointerNativeType();
diff --git a/tests/ffi_2/vmspecific_highmem_32bit_test.dart b/tests/ffi_2/vmspecific_highmem_32bit_test.dart
index c97f7d0..b0fb8e2 100644
--- a/tests/ffi_2/vmspecific_highmem_32bit_test.dart
+++ b/tests/ffi_2/vmspecific_highmem_32bit_test.dart
@@ -6,7 +6,6 @@
 
 import 'dart:ffi';
 import 'dart:io';
-import 'dart:typed_data';
 
 import 'package:expect/expect.dart';
 
diff --git a/tests/ffi_2/vmspecific_leaf_call_test.dart b/tests/ffi_2/vmspecific_leaf_call_test.dart
index 1cb94fb..05937af 100644
--- a/tests/ffi_2/vmspecific_leaf_call_test.dart
+++ b/tests/ffi_2/vmspecific_leaf_call_test.dart
@@ -11,28 +11,29 @@
 
 import 'package:expect/expect.dart';
 
-import 'dylib_utils.dart';
-import 'ffi_test_helpers.dart';
 import 'callback_tests_utils.dart';
+import 'dylib_utils.dart';
 
 DynamicLibrary ffiTestFunctions = dlopenPlatformSpecific("ffi_test_functions");
 
 testLeafCall() {
   // Regular calls should transition generated -> native.
-  final isThreadInGenerated = ffiTestFunctions.lookupFunction<
-      Int8 Function(), int Function()>("IsThreadInGenerated");
+  final isThreadInGenerated = ffiTestFunctions
+      .lookupFunction<Int8 Function(), int Function()>("IsThreadInGenerated");
   Expect.equals(0, isThreadInGenerated());
   // Leaf calls should remain in generated state.
-  final isThreadInGeneratedLeaf = ffiTestFunctions.lookupFunction<
-      Int8 Function(), int Function()>("IsThreadInGenerated", isLeaf: true);
+  final isThreadInGeneratedLeaf = ffiTestFunctions
+      .lookupFunction<Int8 Function(), int Function()>("IsThreadInGenerated",
+          isLeaf: true);
   Expect.equals(1, isThreadInGeneratedLeaf());
 }
 
 testLeafCallApi() {
   // Note: This will only crash as expected in debug build mode. In other modes
   // it's effectively skip.
-  final f = ffiTestFunctions.lookupFunction<
-      Void Function(), void Function()>("TestLeafCallApi", isLeaf: true);
+  final f = ffiTestFunctions.lookupFunction<Void Function(), void Function()>(
+      "TestLeafCallApi",
+      isLeaf: true);
   // Calling Dart_.. API is unsafe from leaf calls since we explicitly haven't
   // made the generated -> native transition.
   f();
@@ -46,7 +47,8 @@
   // Note: This will only crash as expected in debug build mode. In other modes
   // it's effectively skip.
   CallbackTest("CallbackLeaf", Pointer.fromFunction<Void Function()>(nop),
-      isLeaf:true).run();
+          isLeaf: true)
+      .run();
 }
 
 main() {
diff --git a/tools/VERSION b/tools/VERSION
index bc7478b..2253081 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 15
 PATCH 0
-PRERELEASE 157
+PRERELEASE 158
 PRERELEASE_PATCH 0
\ No newline at end of file