reading Blort.class...
method <init> ()V
first 000c
block 0000
  pred 000a
  Blort.java:2@0001: Rop{invoke-direct . <- Ljava/lang/Object; call throws <any
  >}(java.lang.Object.<init>:()V catch) . <- v0:NffffLBlort;
  next 000b
block 000a
  pred 000c
  Blort.java:2@0000: move-param-object(0) v0:"this"NffffLBlort; <- .
  Blort.java:2@0000: goto . <- .
  next 0000
block 000b
  pred 0000
  Blort.java:2@0004: return-void . <- .
  returns
block 000c
  @????: goto . <- .
  next 000a

method testMultipleIdenticalSuccessors (I)V
first 0053
block 0000
  pred 004a
  Blort.java:5@0001: switch({1, 2, 3}) . <- v3:I
  next 001c
  next 001c
  next 001c
  next 004b *
block 001c
  pred 0000
  pred 0000
  pred 0000
  Blort.java:9@001c: get-static-object(java.lang.System.out:Ljava/io/PrintStrea
  m; catch) . <- .
  next 0051
block 001f
  pred 0051
  Blort.java:9@001f: const-object("foo" catch) . <- .
  next 0052
block 0021
  pred 0052
  Blort.java:9@0021: Rop{invoke-virtual . <- Ljava/io/PrintStream; Ljava/lang/S
  tring; call throws <any>}(java.io.PrintStream.println:(Ljava/lang/String;)V c
  atch) . <- v0:Ljava/io/PrintStream; v1:Ljava/lang/String;="foo"
  next 004b
block 004a
  pred 0053
  Blort.java:5@0000: move-param-object(0) v2:"this"LBlort; <- .
  Blort.java:5@0000: move-param-int(1) v3:"foo"I <- .
  Blort.java:5@0000: goto . <- .
  next 0000
block 004b
  pred 0000
  pred 0021
  Blort.java:12@0024: return-void . <- .
  returns
block 0051
  pred 001c
  Blort.java:9@001c: Rop{move-result-pseudo Ljava/io/PrintStream; <- . flows} v
  0:Ljava/io/PrintStream; <- .
  Blort.java:9@001c: goto . <- .
  next 001f
block 0052
  pred 001f
  Blort.java:9@001f: Rop{move-result-pseudo Ljava/lang/String; <- . flows} v1:L
  java/lang/String;="foo" <- .
  Blort.java:9@001f: goto . <- .
  next 0021
block 0053
  @????: goto . <- .
  next 004a

method testNoPrimarySuccessor ()V
first 001a
block 0000
  pred 0012
  Blort.java:16@0000: new-instance(java.lang.RuntimeException catch java.lang.R
  untimeException) . <- .
  next 001b
  next 0019 *
block 0003
  pred 0019
  Blort.java:16@0004: Rop{invoke-direct . <- Ljava/lang/RuntimeException; call 
  throws <any>}(java.lang.RuntimeException.<init>:()V catch java.lang.RuntimeEx
  ception) . <- v0:N0000Ljava/lang/RuntimeException;
  next 001b
  next 0007 *
block 0007
  pred 0003
  Blort.java:16@0007: throw(catch java.lang.RuntimeException) . <- v0:Ljava/lan
  g/RuntimeException;
  next 001b
block 0012
  pred 001a
  Blort.java:16@0000: move-param-object(0) v1:"this"LBlort; <- .
  Blort.java:16@0000: goto . <- .
  next 0000
block 0013
  pred 001b
  Blort.java:19@0009: return-void . <- .
  returns
block 0019
  pred 0000
  Blort.java:16@0000: Rop{move-result-pseudo N0000Ljava/lang/RuntimeException; 
  <- . flows} v0:N0000Ljava/lang/RuntimeException; <- .
  Blort.java:16@0000: goto . <- .
  next 0003
block 001a
  @????: goto . <- .
  next 0012
block 001b
  pred 0000
  pred 0003
  pred 0007
  Blort.java:17@0008: Rop{move-exception Ljava/lang/RuntimeException; <- . flow
  s} v0:Ljava/lang/RuntimeException; <- .
  @????: goto . <- .
  next 0013
