}
catch (InvocationTargetException e) {
Throwable targetException = e.getTargetException();
if (targetException instanceof Throw) {
Throw th = (Throw) targetException;
StackTrace trace = new StackTrace();
trace.addAll(th.getTrace());
ISourceLocation loc = th.getLocation();
if (loc == null) {
loc = getAst().getLocation();
}
trace.add(loc, null);
th.setLocation(loc);
trace.addAll(eval.getStackTrace());
th.setTrace(trace.freeze());
throw th;
}
else if (targetException instanceof StaticError) {
throw (StaticError) targetException;
}