System.out.println("       (Tile Already Assigned)");
    private boolean getLayout(FilterTraceNode filter, RawTile tile, HashMap layout)    {		//check if this tile is available, if not return false	if (!isTileAvail(tile)) {	    System.out.println("       (Tile not currently available)");	    return false;	}		//cannot assign a tile twice...	if (layout.containsValue(tile)) {	    System.out.println("       (Tile Already Assigned)");	    return false;	}	//if this is an endpoint, it must be on a border tile	if ((filter.getNext().isOutputTrace() || filter.getPrevious().isInputTrace()) &&	    !tile.hasIODevice()) {	    System.out.println("       (Endpoint not at border tile)");	    return false;	}		//check file readers/writers, they must be 	//on border and each tile can have one of each	if (filter.isFileInput() && !(tile.hasIODevice() && 				      !readsFile[tile.getTileNumber()])) {	    System.out.println("       (Failed file reader)");	    return false;	}		if (filter.isFileOutput() && !(tile.hasIODevice() &&				       !writesFile[tile.getTileNumber()])) {	    System.out.println("       (Failed file writer)");	    return false;	}		//add this to the layout, because everything worked	layout.put(filter, tile);		//see if the downstream filters fit	if (filter.getNext().isFilterTrace()) {	    Vector neighbors = tile.getNeighborTiles();	    //try all the possible neighboring tiles for the	    //next filter, if any work return true	    boolean found = false;	    //try the middle tiles first	    for (int i = 0; i < neighbors.size(); i++) 		if (!((RawTile)neighbors.get(i)).hasIODevice() &&		    getLayout((FilterTraceNode)filter.getNext(), 			      (RawTile)neighbors.get(i), layout)) {		    found = true;		    break;		}	    //try border tiles	    for (int i = 0; !found && i < neighbors.size(); i++) 		if (((RawTile)neighbors.get(i)).hasIODevice() &&		    getLayout((FilterTraceNode)filter.getNext(), 			      (RawTile)neighbors.get(i), layout)) {		    found = true;		    break;		}	    //nothing found return false	    if (!found) {		//remove the current tile from the layout		layout.remove(filter);		System.out.println("       (Cannot find anything downstream)");		return false;	    }	    	}		return true;    }