Test Class.forName and serialization on inner classes

Change-Id: Ib8e5e5df02818ca05d46d866f60a59c07a843d51
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 {