boolean (StatEdge edge) { Statement from = edge.getSource(); Statement to = edge.getDestination(); while (true) { Statement parent = from.getParent(); if (parent.containsStatementStrict(to)) { break; } if (parent.type == StatementType.TRY_CATCH || parent.type == StatementType.CATCH_ALL) { if (parent.getFirst() == from) { return false; } } else if (parent.type == StatementType.SYNCHRONIZED) { if (parent.getStats().get(1) == from) { return false; } } from = parent; } return true; }