int elements = Util.getTypeSize(Util.getOutputType(fire));
int elements = Util.getTypeSize(CommonUtils.getOutputType(fire));
    protected void generateSwitchCode(FlatNode fire, List dests)     {        assert !(layout.getIdentities().contains(fire));                //should only have one previous        HashMap prev = new HashMap();        HashMap next = new HashMap();        ListIterator destsIt = dests.listIterator();        while (destsIt.hasNext()) {            FlatNode dest = (FlatNode)destsIt.next();            assert dest != null;            assert !(layout.getIdentities().contains(dest));            //  System.out.println("  Dest: " + dest + " " + layout.getTile(dest));            ComputeNode[] hops =                 (ComputeNode[])layout.router.                getRoute(ssg, layout.getComputeNode(fire), layout.getComputeNode(dest)).toArray(new ComputeNode[0]);                        assert hops.length > 1 : "Error: Bad Layout (could not find route from " + fire.toString() + " -> " +                dest.toString();            //for (int i = 0; i < hops.length; i++)            //      System.out.println("     " + hops[i]);                    //add to fire's next            if (!next.containsKey(layout.getComputeNode(fire)))                 next.put(layout.getComputeNode(fire), new HashSet());            ((HashSet)next.get(layout.getComputeNode(fire))).add(hops[1]);            //add to all other previous, next            for (int i = 1; i < hops.length -1; i++) {                if (prev.containsKey(hops[i]))                    if (prev.get(hops[i]) != hops[i-1])                        Utils.fail("More than one previous tile for a single data item");                prev.put(hops[i], hops[i-1]);                if (!next.containsKey(hops[i]))                    next.put(hops[i], new HashSet());                ((HashSet)next.get(hops[i])).add(hops[i+1]);            }            //add the last step, plus the dest to the dest map            if (prev.containsKey(hops[hops.length - 1]))                if (prev.get(hops[hops.length - 1]) != hops[hops.length - 2])                    Utils.fail("More than one previous tile for a single data item (2)");            prev.put(hops[hops.length-1], hops[hops.length - 2]);            if (!next.containsKey(hops[hops.length-1]))                next.put(hops[hops.length - 1], new HashSet());            ((HashSet)next.get(hops[hops.length - 1])).add(hops[hops.length -1]);        }            //create the appropriate amount of routing instructions        int elements = Util.getTypeSize(Util.getOutputType(fire));        for (int i = 0; i < elements; i++)            asm(layout.getComputeNode(fire), prev, next);    }