System.out.println("Scheduling Trace: " + trace);
    private void scheduleTrace(HashMap layout, Trace trace, LinkedList sortedList)     {	assert layout != null && trace != null;	System.out.println("Scheduling Trace: " + trace);	//remove this trace from the list of traces to schedule	sortedList.remove(trace);	//add the trace to the schedule	schedule.add(trace);		//now set the layout for the filterTraceNodes	//and set the available time for each tile	TraceNode node = trace.getHead().getNext();	while (node instanceof FilterTraceNode) {	    assert layout.containsKey(node) && 		layout.get(node) != null;	    RawTile tile = (RawTile)layout.get(node);	    ((FilterTraceNode)node).setXY(tile.getX(), 					  tile.getY());	    //add to the avail time for the tile	    //add the bottleneck work	    tileAvail[tile.getTileNumber()] = currentTime 		+ partitioner.getTraceBNWork(trace);	    	    System.out.println("  *(" + currentTime + ") Assigning " + node + " to " + tile + 			       "(new avail: " + tileAvail[tile.getTileNumber()] + ")");	    //if this is a file node, record that we have 	    //used this tile to either read or write a file...	    if (((FilterTraceNode)node).isFileInput()) {		assert tile.hasIODevice() && !readsFile[tile.getTileNumber()];		readsFile[tile.getTileNumber()] = true;			    } else if (((FilterTraceNode)node).isFileOutput()) {		assert tile.hasIODevice() && !writesFile[tile.getTileNumber()];		writesFile[tile.getTileNumber()] = true;	    }	    //set the space time schedule?? Jasper's stuff	    //don't do it for the first node	    /*	    if (node != trace.getHead().getNext()) 		spSched.add(trace, ((FilterTraceNode)node).getY(),			  ((FilterTraceNode)node).getX());	    else //do this instead		spSched.addHead(trace, ((FilterTraceNode)node).getY(),				((FilterTraceNode)node).getX());	    */	    node = node.getNext();	}    }