void analyze() throws AnalyzerException {
    Frame<BasicValue> frame = createStartFrame();
    int insnIndex = 0;

    while (true) {
      AbstractInsnNode insnNode = methodNode.instructions.get(insnIndex);
      switch (insnNode.getType()) {
        case AbstractInsnNode.LABEL, AbstractInsnNode.LINE, AbstractInsnNode.FRAME -> insnIndex = controlFlow.transitions[insnIndex][0];
        default -> {
          switch (insnNode.getOpcode()) {
            case ATHROW -> {
              exception = true;
              return;
            }
            case ARETURN, IRETURN, LRETURN, FRETURN, DRETURN -> {
              returnValue = frame.pop();
              return;
            }
            case RETURN -> {
              // nothing to return
              return;
            }
            default -> {
              frame.execute(insnNode, interpreter);
              insnIndex = controlFlow.transitions[insnIndex][0];
            }
          }
        }
      }
    }
  }
void analyze()