if (FileVisitor.fileNodes.contains(n)) continue;
    public static void dumpLayout() {	StringBuffer buf = new StringBuffer();		buf.append("digraph Layout {\n");	buf.append("size = \"8, 10.5\"");	buf.append("node [shape=box];\nedge[arrowhead=dot, style=dotted]\n");	for (int i = 0; i < StreamItOptions.rawRows; i++) {	    buf.append("{rank = same;");	    for (int j = 0; j < StreamItOptions.rawColumns; j++) {		buf.append("tile" + getTileNumber(getTile(i, j)) + ";");	    }	    buf.append("}\n");	}	for (int i = 0; i < StreamItOptions.rawRows; i++) {	    for (int j = 0; j < StreamItOptions.rawColumns; j++) {		Iterator neighbors = getNeighbors(getTile(i, j)).iterator();		while (neighbors.hasNext()) {		    Coordinate n = (Coordinate)neighbors.next();		    buf.append("tile" + getTileNumber(getTile(i,j)) + " -> tile" +			       getTileNumber(n) + " [weight = 10000];\n");		}	    }	}	buf.append("edge[color = red,arrowhead = normal, style = bold];\n");	Iterator it = tileAssignment.values().iterator();	while(it.hasNext()) {	     FlatNode node = (FlatNode) it.next();	     buf.append("tile" +   getTileNumber(node) + "[label=\"" + 			node.contents.getName() + "\"];\n");	     	     //we only map joiners and filters to tiles and they each have	     //only one output	     Iterator downstream = getDownStream(node).iterator();	     while(downstream.hasNext()) {		 FlatNode n = (FlatNode)downstream.next();		 buf.append("tile" + getTileNumber(node) + 			    " -> tile" +			    getTileNumber(n) + " [weight = 1];\n");	     }	     	}	buf.append("}\n");		try {	    FileWriter fw = new FileWriter("layout.dot");	    fw.write(buf.toString());	    fw.close();	}	catch (Exception e) {	    System.err.println("Could not print layout");	}    }