String () { if (blocks == null) return "Empty"; String new_line_separator = DecompilerContext.getNewLineSeparator(); StringBuilder buf = new StringBuilder(); for (BasicBlock block : blocks) { buf.append("----- Block ").append(block.id).append(" -----").append(new_line_separator); buf.append(block); buf.append("----- Edges -----").append(new_line_separator); List<BasicBlock> suc = block.getSuccessors(); for (BasicBlock aSuc : suc) { buf.append(">>>>>>>>(regular) Block ").append(aSuc.id).append(new_line_separator); } suc = block.getSuccessorExceptions(); for (BasicBlock handler : suc) { ExceptionRangeCFG range = getExceptionRange(handler, block); if (range == null) { buf.append(">>>>>>>>(exception) Block ").append(handler.id).append("\t").append("ERROR: range not found!") .append(new_line_separator); } else { List<String> exceptionTypes = range.getExceptionTypes(); if (exceptionTypes == null) { buf.append(">>>>>>>>(exception) Block ").append(handler.id).append("\t").append("NULL").append(new_line_separator); } else { for (String exceptionType : exceptionTypes) { buf.append(">>>>>>>>(exception) Block ").append(handler.id).append("\t").append(exceptionType).append(new_line_separator); } } } } buf.append("----- ----- -----").append(new_line_separator); } return buf.toString(); }