void () { for (Statement st : stats) { st.buildMonitorFlags(); } switch (type) { case BASIC_BLOCK -> { BasicBlockStatement bblock = (BasicBlockStatement)this; InstructionSequence seq = bblock.getBlock().getSeq(); if (seq != null && !seq.isEmpty()) { for (int i = 0; i < seq.length(); i++) { if (seq.getInstr(i).opcode == CodeConstants.opc_monitorexit) { containsMonitorExit = true; break; } } isMonitorEnter = (seq.getLastInstr().opcode == CodeConstants.opc_monitorenter); } } case SEQUENCE, IF -> { containsMonitorExit = false; for (Statement st : stats) { containsMonitorExit |= st.isContainsMonitorExit(); } } case SYNCHRONIZED, ROOT, GENERAL -> { } default -> { containsMonitorExit = false; for (Statement st : stats) { containsMonitorExit |= st.isContainsMonitorExit(); } } } }