public synchronized Throwable initCause(Throwable throwable){
  if (cause == this) {
    if (throwable != this) {
      cause=throwable;
      return this;
    }
    throw new IllegalArgumentException("Cause cannot be the receiver");
  }
  throw new IllegalStateException("Cause already initialized");
}

public synchronized Throwable initCause ( Throwable throwable ) { if ( cause == this ) { if ( throwable != this ) { cause = throwable ; return this ; } throw new IllegalArgumentException ( "Cause cannot be the receiver" ) ; } throw new IllegalStateException ( "Cause already initialized" ) ; }
initialize the cause of the receiver . the cause cannot be reassigned .
