package p;

/** typecomment template*/
public interface I {

	public abstract void x();

	//	 TestRunListener implementation
	public abstract void y() /* nasty */;

	public abstract void z() // xx
	;

	/** Javadoc*/
	abstract public void a() /**post-Javadoc*/
	;

	/**JD*/

	//abstract
	public abstract void b();

	//destruct
	public abstract void c()
	/* Comments*/
	/** en */
	// gros!
	; //post

	public abstract void d();

}