declare namespace java {
    namespace util {
        namespace concurrent {
            // @ts-ignore
             class ExecutionException extends java.lang.Exception {
                /**
                 * Constructs an {@code ExecutionException} with no detail message.
                 * The cause is not initialized, and may subsequently be
                 * initialized by a call to {@link #initCause(Throwable) initCause}.
                 */
                // @ts-ignore
                constructor()
                /**
                 * Constructs an {@code ExecutionException} with the specified detail
                 * message. The cause is not initialized, and may subsequently be
                 * initialized by a call to {@link #initCause(Throwable) initCause}.
                 */
                // @ts-ignore
                constructor(message: string)
                /**
                 * Constructs an {@code ExecutionException} with the specified detail
                 * message and cause.
                 */
                // @ts-ignore
                constructor(message: string, cause: java.lang.Throwable)
                /**
                 * Constructs an {@code ExecutionException} with the specified cause.
                 * The detail message is set to {@code (cause == null ? null :
                 * cause.toString())} (which typically contains the class and
                 * detail message of {@code cause}).
                 */
                // @ts-ignore
                constructor(cause: java.lang.Throwable)
            }
        }
    }
}
