private static T filterStackTrace()

in aws-lambda-java-runtime-interface-client/src/main/java/com/amazonaws/services/lambda/runtime/api/client/UserFault.java [75:107]


    private static <T extends Throwable> T filterStackTrace(T t, Set<Throwable> visited, Set<Throwable> visitedSuppressed) {
        if (visited.contains(t)) {
            return t;
        }

        visited.add(t);

        StackTraceElement[] trace = t.getStackTrace();
        for (int i = 0; i < trace.length; i++) {
            if (trace[i].getClassName().startsWith(packagePrefix)) {
                StackTraceElement[] newTrace = new StackTraceElement[i];
                System.arraycopy(trace, 0, newTrace, 0, i);
                t.setStackTrace(newTrace);
                break;
            }
        }


        Throwable cause = t.getCause();
        if (cause != null) {
            filterStackTrace(cause, visited, visitedSuppressed);
        }

        Throwable[] suppressedExceptions = t.getSuppressed();
        for (Throwable suppressed: suppressedExceptions) {
            if (!visitedSuppressed.contains(suppressed)) {
                visitedSuppressed.add(suppressed);
                filterStackTrace(suppressed, visited, visitedSuppressed);
            }
        }

        return t;
    }