package p;

public abstract class A {
	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();
}
