diff --git a/test/178-app-image-native-method/src/Main.java b/test/178-app-image-native-method/src/Main.java
index bec7740..07990cb 100644
--- a/test/178-app-image-native-method/src/Main.java
+++ b/test/178-app-image-native-method/src/Main.java
@@ -31,17 +31,17 @@
     new TestMissingCritical();
     makeVisiblyInitialized();  // Make sure they are visibly initialized.
 
-    // FIXME: @FastNative and @CriticalNative fail a state check in artFindNativeMethod().
     test();
     testFast();
-    // testCritical();
+    testCritical();
     testMissing();
     testMissingFast();
-    // testMissingCritical();
+    testMissingCritical();
   }
 
   static void test() {
     System.out.println("test");
+    assertEquals(42, Test.nativeMethodVoid());
     assertEquals(42, Test.nativeMethod(42));
     assertEquals(42, Test.nativeMethodWithManyParameters(
         11, 12L, 13.0f, 14.0d,
@@ -56,6 +56,7 @@
 
   static void testFast() {
     System.out.println("testFast");
+    assertEquals(42, TestFast.nativeMethodVoid());
     assertEquals(42, TestFast.nativeMethod(42));
     assertEquals(42, TestFast.nativeMethodWithManyParameters(
         11, 12L, 13.0f, 14.0d,
@@ -70,6 +71,7 @@
 
   static void testCritical() {
     System.out.println("testCritical");
+    assertEquals(42, TestCritical.nativeMethodVoid());
     assertEquals(42, TestCritical.nativeMethod(42));
     assertEquals(42, TestCritical.nativeMethodWithManyParameters(
         11, 12L, 13.0f, 14.0d,
@@ -86,6 +88,11 @@
     System.out.println("testMissing");
 
     try {
+      TestMissing.nativeMethodVoid();
+      throw new Error("UNREACHABLE");
+    } catch (LinkageError expected) {}
+
+    try {
       TestMissing.nativeMethod(42);
       throw new Error("UNREACHABLE");
     } catch (LinkageError expected) {}
@@ -108,6 +115,11 @@
     System.out.println("testMissingFast");
 
     try {
+      TestMissingFast.nativeMethodVoid();
+      throw new Error("UNREACHABLE");
+    } catch (LinkageError expected) {}
+
+    try {
       TestMissingFast.nativeMethod(42);
       throw new Error("UNREACHABLE");
     } catch (LinkageError expected) {}
@@ -130,6 +142,11 @@
     System.out.println("testMissingCritical");
 
     try {
+      TestMissingCritical.nativeMethodVoid();
+      throw new Error("UNREACHABLE");
+    } catch (LinkageError expected) {}
+
+    try {
       TestMissingCritical.nativeMethod(42);
       throw new Error("UNREACHABLE");
     } catch (LinkageError expected) {}
@@ -158,6 +175,8 @@
 }
 
 class Test {
+  public static native int nativeMethodVoid();
+
   public static native int nativeMethod(int i);
 
   public static native int nativeMethodWithManyParameters(
@@ -173,6 +192,9 @@
 
 class TestFast {
   @FastNative
+  public static native int nativeMethodVoid();
+
+  @FastNative
   public static native int nativeMethod(int i);
 
   @FastNative
@@ -189,6 +211,9 @@
 
 class TestCritical {
   @CriticalNative
+  public static native int nativeMethodVoid();
+
+  @CriticalNative
   public static native int nativeMethod(int i);
 
   @CriticalNative
@@ -204,6 +229,8 @@
 }
 
 class TestMissing {
+  public static native int nativeMethodVoid();
+
   public static native int nativeMethod(int i);
 
   public static native int nativeMethodWithManyParameters(
@@ -219,6 +246,9 @@
 
 class TestMissingFast {
   @FastNative
+  public static native int nativeMethodVoid();
+
+  @FastNative
   public static native int nativeMethod(int i);
 
   @FastNative
@@ -235,6 +265,9 @@
 
 class TestMissingCritical {
   @CriticalNative
+  public static native int nativeMethodVoid();
+
+  @CriticalNative
   public static native int nativeMethod(int i);
 
   @CriticalNative
