printWorkHeader(); body.accept(this); printWorkTrailer();
if (circular) { printCircularWorkHeader(); body.accept(this); printCircularWorkTrailer(); } else { printWorkHeader(); body.accept(this); printWorkTrailer(); }
    public void visitMethodDeclaration(JMethodDeclaration self,                                       int modifiers,                                       CType returnType,                                       String ident,                                       JFormalParameter[] parameters,                                       CClassType[] exceptions,                                       JBlock body) {	// !!! for now, don't generate code for initWork (TODO)	if (ident.endsWith("initWork")) { return; }        newLine();	// print(CModifier.toString(modifiers));	print(returnType);	print(" ");	print(ident);	print("(");	int count = 0;		for (int i = 0; i < parameters.length; i++) {	    if (count != 0) {		print(", ");	    }	    	    // if (!parameters[i].isGenerated()) {	    parameters[i].accept(this);	    count++;	    // }	}	print(")");		if (declOnly)	    {		print(";");		return;	    }        print(" ");        if (body != null) {	    //see if this is the work function	    //if it is print the work header and trailer	    if (filter != null) {		if (filter.getWork() == self) {		    printWorkHeader();		    body.accept(this);		    printWorkTrailer();		}		else 		    body.accept(this);	    }	    else //not the work function		body.accept(this);        } else {            print(";");        }        newLine();    }