if (ssg.isInput(node)) {
SIRFilter filter = (SIRFilter) node.contents;  if (!Layout.assignToATile(node)) return;  calculateItems(filter);  System.out.print("Generating Raw Code: " + node.contents.getName() + " ");     if (bottomPeek == 0 && remaining == 0 && DirectCommunication.doit(ssg, node)) { System.out.println("(Direct Communication)");  return; }   if (ssg.isInput(node)) {
    public void visitNode(FlatNode node) {        if (node.isFilter()) {            // dynamic input            if (ssg.isInput(node)) {                // create dynamic network code and a circular buffer                (new BufferedDynamicCommunication(ssg, node)).doit();            } else {                //we have static communication, see if we need a buffer or not                                SIRFilter filter = (SIRFilter) node.contents;                // Skip Identities now                if (!Layout.assignToATile(node))                    return;                if (!KjcOptions.decoupled)                    calculateItems(filter);                System.out.print("Generating Raw Code: "                        + node.contents.getName() + " ");                // attempt to generate direct communication code                // (no buffer), if this returns true it was sucessful                // and the code was produced                if (bottomPeek == 0 && remaining == 0                        && DirectCommunication.doit(ssg, node)) {                    System.out.println("(Direct Communication)");                    return;                }                //if we get here, then we have to use a buffer for input                                 // create static network code and a buffer (maybe circular or                // linear)                (new BufferedStaticCommunication(ssg, node, bottomPeek,                        remaining, initFire)).doit();            }        }    }