@Override
    protected String throwableProxyToString(IThrowableProxy tp) {
        final String prefixed = PATTERN.matcher(super.throwableProxyToString(tp)).replaceAll(PREFIX);
        return CAUSING_PATTERN.matcher(prefixed).replaceAll(CAUSING);
    }
@Test
    void placesRootCauseIsFirst() {
        assertThat(converter.throwableProxyToString(proxy)).matches(Pattern.compile(".+" +
                "java\\.net\\.SocketTimeoutException: Timed-out reading from socket.+" +
                "java\\.io\\.IOException: Fairly general error doing some IO.+" +
                "java\\.lang\\.RuntimeException: Very general error doing something" +
                ".+", Pattern.DOTALL));
    }