diff --git a/test/042-new-instance/expected.txt b/test/042-new-instance/expected.txt
index bb1b80c..7d843d1 100644
--- a/test/042-new-instance/expected.txt
+++ b/test/042-new-instance/expected.txt
@@ -4,6 +4,8 @@
 Got expected InstantationError
 Cons LocalClass failed as expected
 Cons LocalClass2 succeeded
+Cons InnerClass succeeded
+Cons StaticInnerClass succeeded
 Cons got expected PackageAccess complaint
 Cons got expected InstantationException
 Cons got expected PackageAccess2 complaint
diff --git a/test/042-new-instance/src/Main.java b/test/042-new-instance/src/Main.java
index e43c5a5..b0a5fd4 100644
--- a/test/042-new-instance/src/Main.java
+++ b/test/042-new-instance/src/Main.java
@@ -92,6 +92,28 @@
             ex.printStackTrace();
         }
 
+        // should succeed
+        try {
+            Class c = Class.forName("Main$InnerClass");
+            Constructor cons = c.getDeclaredConstructor(new Class<?>[]{Main.class});
+            Object obj = cons.newInstance(new Main());
+            System.out.println("Cons InnerClass succeeded");
+        } catch (Exception ex) {
+            System.err.println("Cons InnerClass failed");
+            ex.printStackTrace();
+        }
+
+        // should succeed
+        try {
+            Class c = Class.forName("Main$StaticInnerClass");
+            Constructor cons = c.getDeclaredConstructor((Class[]) null);
+            Object obj = cons.newInstance();
+            System.out.println("Cons StaticInnerClass succeeded");
+        } catch (Exception ex) {
+            System.err.println("Cons StaticInnerClass failed");
+            ex.printStackTrace();
+        }
+
         // should fail
         try {
             Class c = Class.forName("otherpackage.PackageAccess");
@@ -135,6 +157,12 @@
         }
 
     }
+
+    class InnerClass {
+    }
+
+    static class StaticInnerClass {
+    }
 }
 
 class LocalClass {
diff --git a/test/093-serialization/expected.txt b/test/093-serialization/expected.txt
index 60c64f8..c9bc1c3 100644
--- a/test/093-serialization/expected.txt
+++ b/test/093-serialization/expected.txt
@@ -1 +1,2 @@
 one=true two=2 three=three four=4.0 five=5.0 six=6 seven=7 eight=8 nine=9 thing=X
+x=cafef00d
diff --git a/test/093-serialization/src/Main.java b/test/093-serialization/src/Main.java
index ca3dc9f..3cb98be 100644
--- a/test/093-serialization/src/Main.java
+++ b/test/093-serialization/src/Main.java
@@ -47,6 +47,8 @@
 
         Sub sub = new Sub('X');
         objStream.writeObject(sub);
+        Inner inner = new Inner(0xCAFEF00D);
+        objStream.writeObject(inner);
         byte[] bytes = byteStream.toByteArray();
 
         objStream.close();
@@ -59,8 +61,10 @@
         ObjectInputStream objStream = new ObjectInputStream(byteStream);
 
         Sub sub;
+        Inner inner;
         try {
             sub = (Sub) objStream.readObject();
+            inner = (Inner) objStream.readObject();
         } catch (ClassNotFoundException cnfe) {
             throw new RuntimeException(cnfe);
         }
@@ -69,6 +73,19 @@
         byteStream.close();
 
         sub.check();
+        inner.check();
+    }
+
+    static class Inner implements Serializable {
+        private static final long serialVersionUID = 319009;
+        private final int x;
+        public Inner (int x) {
+            this.x = x;
+        }
+
+        public void check() {
+            System.out.println("x=" + Integer.toHexString(x));
+        }
     }
 }
 
@@ -113,4 +130,3 @@
             + " thing=" + thing);
     }
 }
-
