Utils.assert(tile!=-1, "This node is without a tile assigment: " + nodes.get(i));
assert tile!=-1 : "This node is without a tile assigment: " + nodes.get(i);
    private HashMap buildPartitionMap(double[] sol) {	HashMap result = new HashMap();	for (int i=1; i<nodes.size()-1; i++) {	    // find tile that node <i> is assigned to	    int tile = -1;	    //System.err.println("Looking for tile for node #" + i + ": " + nodes.get(i));	    for (int j=0; j<numTiles; j++) {		if (almostEqual(sol[pNum(i,j)],1)) {		    Utils.assert(tile==-1, 				 "This node is assigned to both tile #" + tile + " and tile #" + j + 				 " (and possibly others): " + nodes.get(i));		    //System.err.println("  assigned to tile " + j);		    tile = j;		}	    }	    Utils.assert(tile!=-1, "This node is without a tile assigment: " + nodes.get(i));	    // register node->tile map in result	    result.put(nodes.get(i), new Integer(tile));	    // adjust registration of all parents if necessary	    SIRContainer par = ((SIROperator)nodes.get(i)).getParent();	    boolean done = false;	    while (par!=null && !done) {		if (result.containsKey(par)) {		    // if parent already given tile, see if it's same		    // as this one or already -1; if so, quit.  If		    // not, it must be assigned a different tile, so		    // mark it as -1.		    int parTile = ((Integer)result.get(par)).intValue();		    if (parTile==tile || parTile==-1) {			done = true;		    } else {			result.put(par, new Integer(-1));		    }		} else {		    // if parent not given tile, then give it this tile		    result.put(par, new Integer(tile));		}		par = par.getParent();	    }	}	return result;    }