package jI9051131;

import java.lang.reflect.InvocationTargetException;

interface A {
	String name(); 
}

class B implements A {
	
	public String name() { 
		return getClass().getName(); 
	} 

	public String toString() { 
		return name(); 
	} 
}

public class NewInstanceBug {

	public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException {
		// A z1 = Class.forName("jI9051131.B").asSubclass(jI9051131.A.class).getConstructor().newInstance(); 
         B z2 = Class.forName("jI9051131.B").asSubclass(jI9051131.B.class).getConstructor().newInstance(); 

//        System.err.println("z1.name(): "+z1.name()); 
//        System.err.println("z1: "+z1); 
        System.err.println("z2.name(): "+z2.name()); 
        System.err.println("z2: "+z2); 

	}

}
