private void appendStackTraces(final Throwable e, final StringBuilder stringBuilder) {
        if (e.getStackTrace() != null) {
            //noinspection SizeReplaceableByIsEmpty // cos GWT
            if (stringBuilder.length() > 0) {
                stringBuilder.append("\n");
            }
            stringBuilder.append(e.getClass().getName())
                    .append(" - ")
                    .append(e.getMessage())
                    .append(":\n");

            final String stack = Arrays.stream(e.getStackTrace())
                    .map(StackTraceElement::toString)
                    .collect(Collectors.joining("\n"));
            stringBuilder.append(stack);

            final Throwable cause = e.getCause();
            if (cause != null) {
                appendStackTraces(cause, stringBuilder);
            }
        }
    }
This is the entry point method.
stroom-app-gwt/src/main/java/stroom/app/client/App.java