if(f.getName().startsWith("source")) { System.out.println(def.getIdent()); }
	public static void doit(SIRFilter f) 	{	    filter = f;	    localVariables = new HashSet();	    	    JBlock rawMainBlock = RemoveGlobals.getRawMain(filter).getBody();	    JFieldDeclaration[] fields = filter.getFields();	    	    //move all globals var defs into the raw main function	    for (int i = 0; i < fields.length; i++) {		JVariableDefinition def = fields[i].getVariable();		localVariables.add(def);				if(f.getName().startsWith("source")) {		    System.out.println(def.getIdent());		}		rawMainBlock.addStatementFirst		    (new JVariableDeclarationStatement		     (null, def, null));	    }	    	    //remove the field defs from the filter	    filter.setFields(new JFieldDeclaration[0]);	    //convert all access of globals into locals	    RemoveGlobals.getRawMain(filter).accept(new ConvertGlobalsToLocals());	    //remove all the functions except the raw main and 	    //anything we could not inline	    filter.setMethods		((JMethodDeclaration[])		 RemoveGlobals.functionsToKeep.toArray(new JMethodDeclaration[0]));	    	    //set the init to a dummy init if we need an init 	    if (filter.needsInit()) {		filter.setInit(SIRStream.makeEmptyInit());	    }	    //set the work to a dummy work if we need a work	    if (filter.needsWork()) {		filter.setWork(new JMethodDeclaration(null, ACC_PUBLIC, 						      CStdType.Void, 						      "work",						      new JFormalParameter[0], 						      new CClassType[0],						      new JBlock(),						      null, null));	    }	    	}