private LocationImpl(StackTraceFilter stackTraceFilter, Throwable stackTraceHolder) { this.stackTraceFilter = stackTraceFilter; this.stackTraceHolder = stackTraceHolder; if (stackTraceHolder.getStackTrace() == null || stackTraceHolder.getStackTrace().length == 0) { //there are corner cases where exception can have a null or empty stack trace //for example, a custom exception can override getStackTrace() method this.sourceFile = "<unknown source file>"; } else { this.sourceFile = stackTraceFilter.findSourceFile(stackTraceHolder.getStackTrace(), "<unknown source file>"); } }