if (partitioner.isIO(trace)) continue;
    private void swapAssignmentCommPhase() {        int oldMaxWork = maxTileWork(getTileWorks(false));                Trace trace = null;        int attempts = 0;        while (true) {            attempts++;            trace = partitioner.getTraceGraph()[getRandom(partitioner.getTraceGraph().length)];            if (partitioner.isIO(trace))                continue;                        HashMap oldAssign = (HashMap)assignment.clone();                        newTraceAssignment(trace.getHead().getNextFilter());                        int newMaxWork = maxTileWork(getTileWorks(false));            if (newMaxWork <= oldMaxWork) {                break;            }            else {                assignment = oldAssign;            }            //make sure we can always make forward progress            if (attempts > 100)                 return;        }                assert trace != null;    }