import org.aspectj.lang.*;

public class GetCauseOnSoftException {

	public static void a(){
		b();
	}
	/**
	 * Method b.
	 */
	private static void b() {
		throw new MyException("secret");
	}
    
	public static void main(String[] args) {
		try {
			a();
		} catch (SoftException e) {
			System.out.println(e.getCause());
			if (e.getCause().getMessage().indexOf("secret")==-1) 
			  throw new RuntimeException("Didn't get expected cause of SoftException");
		}
	}
}
aspect Softner {
		declare soft : MyException : within(GetCauseOnSoftException);  
}

class MyException extends Exception {
	MyException(String s) { super(s);}
}