public synchronized Throwable initCause(Throwable cause) { if (cause == this) throw new IllegalArgumentException (); if (containedException != null) throw new IllegalStateException (); containedException = cause; causeKnown = true;  return cause;
public Throwable initCause(Throwable cause) { if (this.cause != null) { throw new IllegalStateException(); } if (cause == this) { throw new IllegalArgumentException();
	public synchronized Throwable initCause(Throwable cause) {	    if (cause == this)		throw new IllegalArgumentException ();	    if (containedException != null)		throw new IllegalStateException ();	    containedException = cause;	    causeKnown = true;// FIXME: spec implies "this" may be the right value; another bug?	    return cause;	}