Lst_AtEnd (transforms, (ClientData)gn);
Lst_AtEnd(transforms, gn);
Suff_AddTransform (line)    char          *line;	/* name of transformation to add */{    GNode         *gn;		/* GNode of transformation rule */    Suff          *s,		/* source suffix */                  *t;		/* target suffix */    LstNode 	  ln;	    	/* Node for existing transformation */    ln = Lst_Find(transforms, SuffGNHasNameP, (ClientData)line);    if (ln == NULL) {	/*	 * Make a new graph node for the transformation. It will be filled in	 * by the Parse module.	 */	gn = Targ_NewGN (line);	Lst_AtEnd (transforms, (ClientData)gn);    } else {	/*	 * New specification for transformation rule. Just nuke the old list	 * of commands so they can be filled in again... We don't actually	 * free the commands themselves, because a given command can be	 * attached to several different transformations.	 */	gn = (GNode *) Lst_Datum (ln);	Lst_Destroy (gn->commands, NOFREE);	Lst_Destroy (gn->children, NOFREE);	gn->commands = Lst_Init();	gn->children = Lst_Init();    }    gn->type = OP_TRANSFORM;    (void)SuffParseTransform(line, &s, &t);    /*     * link the two together in the proper relationship and order     */    if (DEBUG(SUFF)) {	printf("defining transformation from `%s' to `%s'\n",		s->name, t->name);    }    SuffInsert (t->children, s);    SuffInsert (s->parents, t);    return (gn);}