String (Location location, Function<? super Throwable, String> defaultName) { try { return location.sourceName(); } catch (InternalError | AbsentInformationException | IllegalArgumentException e) { return defaultName.apply(e); } }