@@ -0,0 +1,1876 @@
+package net.kencochrane.raven.event.interfaces;%0A%0Aimport java.io.PrintStream;%0Aimport java.io.PrintWriter;%0Aimport java.util.Arrays;%0A%0A/**%0A * Wrapper for %7B@code Throwable%7D to make it immutable.%0A */%0Apublic class ImmutableThrowable extends Throwable %7B%0A    private final Throwable actualThrowable;%0A%0A    /**%0A     * Creates an immutable wrapper for the given throwable.%0A     *%0A     * @param actualThrowable exception wrapped.%0A     */%0A    public ImmutableThrowable(Throwable actualThrowable) %7B%0A        this.actualThrowable = actualThrowable;%0A    %7D%0A%0A    @Override%0A    public String getMessage() %7B%0A        return actualThrowable.getMessage();%0A    %7D%0A%0A    @Override%0A    public String getLocalizedMessage() %7B%0A        return actualThrowable.getLocalizedMessage();%0A    %7D%0A%0A    @Override%0A    public Throwable getCause() %7B%0A        return actualThrowable.getCause();%0A    %7D%0A%0A    @Override%0A    public Throwable initCause(Throwable cause) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return actualThrowable.toString();%0A    %7D%0A%0A    @Override%0A    public void printStackTrace() %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A    @Override%0A    public void printStackTrace(PrintStream s) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A    @Override%0A    public void printStackTrace(PrintWriter s) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A    @Override%0A    public Throwable fillInStackTrace() %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%0A    @Override%0A    public StackTraceElement%5B%5D getStackTrace() %7B%0A        StackTraceElement%5B%5D stackTrace = actualThrowable.getStackTrace();%0A        return Arrays.copyOf(stackTrace, stackTrace.length);%0A    %7D%0A%0A    @Override%0A    public void setStackTrace(StackTraceElement%5B%5D stackTrace) %7B%0A        throw new UnsupportedOperationException();%0A    %7D%0A%7D%0A

Add a class to make Throwable immutable