docs: public String formatAsString(boolean reverse) {
          BasicBlock source = getSource();
          BasicBlock target = getTarget();
  
          StringBuilder buf = new StringBuilder();
          buf.append(reverse ? "REVERSE_EDGE(" : "EDGE(");
          buf.append(getLabel());
          buf.append(") type ");
          buf.append(edgeTypeToString(type));
          buf.append(" from block ");
          buf.append(reverse ? target.getLabel() : source.getLabel());
          buf.append(" to block ");
          buf.append(reverse ? source.getLabel() : target.getLabel());
          InstructionHandle sourceInstruction = source.getLastInstruction();
          InstructionHandle targetInstruction = target.getFirstInstruction();
          String exInfo = " -> ";
          if (targetInstruction == null && target.isExceptionThrower()) {
              targetInstruction = target.getExceptionThrower();
              exInfo = " => ";
          }
          if (sourceInstruction != null && targetInstruction != null) {
              buf.append(" [bytecode ");
              buf.append(sourceInstruction.getPosition());
              buf.append(exInfo);
              buf.append(targetInstruction.getPosition());
              buf.append(']');
          } else if (source.isExceptionThrower()) {
              if (type == FALL_THROUGH_EDGE) {
                  buf.append(" [successful check]");
              } else {
                  buf.append(" [failed check for ");
                  buf.append(source.getExceptionThrower().getPosition());
                  if (targetInstruction != null) {
                      buf.append(" to ");
                      buf.append(targetInstruction.getPosition());
                  }
                  buf.append(']');
              }
          }
          return buf.toString();
      }