/*
 * Created on May 7, 2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package org.eclipse.jst.j2ee.java.stressSample;

/**
 * @author DABERG
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class E {

	/**
	 * 
	 */
	public E() {
		super();
	}
	
	public class Test$1 {
		public void run() {
			return;
		}
	}
	public Test$1 getTest() {
		return new Test$1();
	}

}
