OneLineAnalyze { public boolean cantHaveRun(int exitInstruction, int lineIndex) { return cantHaveRun.get(exitInstruction).get(lineIndex); } private  OneLineAnalyze(Map<Integer, BitSet> oneLiners, Map<Integer, BitSet> mustHaveRun, Map<Integer, BitSet> cantHaveRun); boolean mustHaveRunOnce(int exitInstruction, int lineIndex); boolean mustHaveRun(int exitInstruction, int lineIndex); boolean cantHaveRun(int exitInstruction, int lineIndex); static OneLineAnalyze analyze(MethodNode node); int instructionSize();  }
@Test public void shouldIdentifyCantHaveRun() throws IOException { int exitInstruction = 72; for(int i = 0; i < 12; i++) { if(i < 11) { assertFalse("Line index " + i + " should be runnable when exiting from instruction " + exitInstruction, analyze.cantHaveRun(exitInstruction, i)); } else { assertTrue(analyze.cantHaveRun(exitInstruction, i)); } } }