null,
    public JMethodDeclaration makeNewWork(JVariableDefinition realWeightField,					  JVariableDefinition imagWeightField,					  int filterSize, int x, int N) {	/* the body of the new work function */	JBlock body = new JBlock();	/* make a local variable as a buffer to hold the information from the input tape. */	JVariableDefinition inputBuffer;	inputBuffer = new JVariableDefinition(null,         /* token reference */					      0,            /* modifiers */					      getArrayType(), /* float* */					      INPUT_BUFFER_NAME, /* ident */					      null);        /* initializer*/	/* stick in a declaration statement for the buffer into the body of the function. */	body.addStatement(new JVariableDeclarationStatement(null, /* token reference */							    inputBuffer, /* var definition */							    null)); /* comments */	/* allocate space for the input buffer */	JLocalVariableExpression buffExpr = new JLocalVariableExpression(null, inputBuffer);	JNewArrayExpression      newExpr = getNewArrayExpression(filterSize);	JAssignmentExpression    assignExpr = new JAssignmentExpression(null, buffExpr, newExpr);	body.addStatement(new JExpressionStatement(null, assignExpr,						   makeComment("allocate space for input buffer.")));	/* now, copy the data from the input tape into the buffer, element by element */	for (int i=0; i<(N+x-1); i++) {	    JLocalVariableExpression currentBuffExpr = new JLocalVariableExpression(null, inputBuffer);	    JArrayAccessExpression currentAccessExpr = new JArrayAccessExpression(null, currentBuffExpr, new JIntLiteral(i));	    SIRPeekExpression      currentPeekExpr   = new SIRPeekExpression(new JIntLiteral(i), CStdType.Float);	    JAssignmentExpression currentAssignExpr  = new JAssignmentExpression(null, currentAccessExpr, currentPeekExpr);	    /* note that currentAssignExpr is buff[i] = peek(i) */	    body.addStatement(new JExpressionStatement(null, currentAssignExpr, null));	}		/* stick in a call to the do_fast_convolution routine that gets linked in to the C library. */	// prep the args	JExpression[] externalArgs = new JExpression[4];	externalArgs[0] = new JLocalVariableExpression(null, inputBuffer);	externalArgs[1] = new JFieldAccessExpression(null, new JThisExpression(null), realWeightField.getIdent());	externalArgs[2] = new JFieldAccessExpression(null, new JThisExpression(null), imagWeightField.getIdent());	externalArgs[3] = new JIntLiteral(filterSize);	JMethodCallExpression externalCall = new JMethodCallExpression(null,               /* token reference */								       null,               /* prefix */								       FAST_CONV_EXTERNAL, /* ident */								       externalArgs);      /* args */	JavaStyleComment[] comment = makeComment("callout to " + FAST_CONV_EXTERNAL + " to do actual work. "); 	body.addStatement(new JExpressionStatement(null,         /* token reference */						   externalCall, /* expression */						   comment));       /* comments */		/* now, put in code that will push the appropriate values inputBuffer[x-1 to N+x-2] back on the tape */	for (int i=(x-1); i<(N+x-1); i++) {	    body.addStatement(makeArrayPushStatement(inputBuffer, i));	}	/* now, free the memory that we allocated to buffer (this is a wicked hack,	   as there is no notion of "free" in java/streamit */	JExpression[] freeArgs = new JExpression[1];	freeArgs[0] = new JLocalVariableExpression(null, inputBuffer);	JMethodCallExpression freeCall = new JMethodCallExpression(null,     /* token reference */								   null,     /* prefix */								   "free",   /* ident */								   freeArgs);/* args */	comment = makeComment("call to free the buffer space");	body.addStatement(new JExpressionStatement(null, freeCall, comment));		/* stick in the appropriate number (N) of pop calls */	for (int i=0; i<N; i++) {	    body.addStatement(new JExpressionStatement(null, new SIRPopExpression(CStdType.Float), null));	}		/* wrap up all the mess that we just made into a new JMethodDeclaration and return it to the caller */	return new JMethodDeclaration(null,                 /* token reference */				      ACC_PUBLIC,           /* modifiers */				      CStdType.Void,        /* return type */				      "work",               /* identifier */				      JFormalParameter.EMPTY,/* paramters */				      CClassType.EMPTY,     /* exceptions */				      body,                 /* body */				      null,                 /* java doc */				      null);                /* java style comment */    }