@Override public void visualizeBlock(Block bb,Analysis<A,S,T> analysis){
  this.sbBlock.setLength(0);
  List<Node> contents=new LinkedList<>();
switch (bb.getType()) {
case REGULAR_BLOCK:
    contents.addAll(((RegularBlock)bb).getContents());
  break;
case EXCEPTION_BLOCK:
contents.add(((ExceptionBlock)bb).getNode());
break;
case CONDITIONAL_BLOCK:
break;
case SPECIAL_BLOCK:
break;
default :
assert false : "All types of basic blocks covered";
}
boolean notFirst=false;
for (Node t : contents) {
if (notFirst) {
this.sbBlock.append("\\n");
}
notFirst=true;
visualizeBlockNode(t,analysis);
}
boolean centered=false;
if (this.sbBlock.length() == 0) {
centered=true;
if (bb.getType() == BlockType.SPECIAL_BLOCK) {
visualizeSpecialBlock((SpecialBlock)bb);
}
 else if (bb.getType() == BlockType.CONDITIONAL_BLOCK) {
this.sbDigraph.append(" \",];\n");
return;
}
 else {
this.sbDigraph.append("?? empty ?? \",];\n");
return;
}
}
if (analysis != null) {
visualizeBlockTransferInput(bb,analysis);
}
this.sbDigraph.append((this.sbBlock.toString() + (centered ? "" : "\\n")).replace("\\n","\\l") + " \",];\n");
}

@ Override public void visualizeBlock ( Block bb , Analysis < A , S , T > analysis ) { this . sbBlock . setLength ( 0 ) ; List < Node > contents = new LinkedList < > ( ) ; switch ( bb . getType ( ) ) { case REGULAR_BLOCK : contents . addAll ( ( ( RegularBlock ) bb ) . getContents ( ) ) ; break ; case EXCEPTION_BLOCK : contents . add ( ( ( ExceptionBlock ) bb ) . getNode ( ) ) ; break ; case CONDITIONAL_BLOCK : break ; case SPECIAL_BLOCK : break ; default : assert false : "All types of basic blocks covered" ; } boolean notFirst = false ; for ( Node t : contents ) { if ( notFirst ) { this . sbBlock . append ( "\\n" ) ; } notFirst = true ; visualizeBlockNode ( t , analysis ) ; } boolean centered = false ; if ( this . sbBlock . length ( ) == 0 ) { centered = true ; if ( bb . getType ( ) == BlockType . SPECIAL_BLOCK ) { visualizeSpecialBlock ( ( SpecialBlock ) bb ) ; } else if ( bb . getType ( ) == BlockType . CONDITIONAL_BLOCK ) { this . sbDigraph . append ( " \",];\n" ) ; return ; } else { this . sbDigraph . append ( "?? empty ?? \",];\n" ) ; return ; } } if ( analysis != null ) { visualizeBlockTransferInput ( bb , analysis ) ; } this . sbDigraph . append ( ( this . sbBlock . toString ( ) + ( centered ? "" : "\\n" ) ) . replace ( "\\n" , "\\l" ) + " \",];\n" ) ; }
produce a representation of the contests of a basic block .
