if (!(KjcOptions.decoupled || IMEMEstimation.TESTING_IMEM)) {
if (!(KjcOptions.decoupled || IMEMEstimation.TESTING_IMEM || RawWorkEstimator.SIMULATING_WORK)) {
    public static void generateCode(StreamGraph sg) {        streamGraph = sg;        layout = sg.getLayout();        // create a set containing all the ComputeNodes of all        // the nodes in the FlatGraph plus all the tiles involved        // in switching        HashSet computeNodes = new HashSet();        // tiles that are assigned to streams (filters or joiners)        realTiles = new HashSet();        // all the tiles that do anything        tiles = new HashSet();        for (int i = 0; i < streamGraph.getStaticSubGraphs().length; i++) {            StaticStreamGraph staticGraph = streamGraph.getStaticSubGraphs()[i];            staticGraph.getTopLevel().accept(new TileCode(staticGraph),                                             new HashSet(), true);            // for decoupled execution the scheduler does not run            if (!(KjcOptions.decoupled || IMEMEstimation.TESTING_IMEM)) {                computeNodes.addAll(staticGraph.simulator.initSchedules                                    .keySet());                computeNodes.addAll(staticGraph.simulator.steadySchedules                                    .keySet());            }        }        // add only tiles to the <tiles> Set        Iterator cns = computeNodes.iterator();        while (cns.hasNext()) {            ComputeNode cn = (ComputeNode) cns.next();            if (cn != null && cn.isTile())                tiles.add(cn);        }        Iterator tileIterator = tiles.iterator();        while (tileIterator.hasNext()) {            RawTile tile = (RawTile) tileIterator.next();            // do not generate code for this tile            // if it contains a filter or a joiner            // we have already generated the code in the visitor            if (realTiles.contains(tile))                continue;            noFilterCode(tile);        }    }