assert !dynamicInput : "Complicated filters not supported at SSG boundaries as of yet.";
    public void visitNode(FlatNode node)     {	if (node.isFilter()){	    SIRFilter filter = (SIRFilter)node.contents;	    //Skip Identities now	    if(filter instanceof SIRIdentity ||	       filter instanceof SIRFileWriter ||	       filter instanceof SIRFileReader)		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;	    }	    	    assert false : "Peeking filters not support yet";	    	    //otherwise generate code the old way	    LocalVariables localVariables = new LocalVariables();	    	    JBlock block = new JBlock(null, new JStatement[0], null);	    	    if (isSimple(filter))		System.out.print("(simple) ");	    else if (noBuffer(filter))		System.out.print("(no buffer) ");	    else {		if (remaining > 0)		    System.out.print("(remaining) ");		if (filter.getPeekInt() > filter.getPopInt())		    System.out.print("(peeking)");			    }	    System.out.println();	    	    createLocalVariables(node, block, localVariables);	    convertCommExps(filter, 			    isSimple(filter),			    localVariables);	    	    rawMainFunction(node, block, localVariables);	    	    //create the method and add it to the filter	    JMethodDeclaration rawMainFunct = 		new JMethodDeclaration(null, 				       at.dms.kjc.Constants.ACC_PUBLIC,				       CStdType.Void,				       rawMain,				       JFormalParameter.EMPTY,				       CClassType.EMPTY,				       block,				       null,				       null);	    filter.addMethod(rawMainFunct);	}    } 