item = (Item*)calloc(1, sizeof(Item));
item = typecalloc(Item);
PRIVATE Item *parse_item ARGS1(FILE *, fp){    Item *item = NULL;    UserDefList *user_def_list = NULL;    AddressDefList *address_def_list = NULL;    LexItem lex_item;    lex_item = lex(fp);    if (lex_item == LEX_ALPH_STR || lex_item == LEX_OPEN_PAREN) {	unlex(lex_item);	user_def_list = parse_user_part(fp);	lex_item = lex(fp);    }    if (lex_item == LEX_AT_SIGN) {	lex_item = lex(fp);	if (lex_item == LEX_ALPH_STR || lex_item == LEX_TMPL_STR ||	    lex_item == LEX_OPEN_PAREN) {	    unlex(lex_item);	    address_def_list = parse_address_part(fp);	}	else {	    if (user_def_list) {		HTList_delete(user_def_list);	/* @@@@ */		user_def_list = NULL;	    }	    syntax_error(fp, "Expected address part (single address or list)",			 lex_item);	    return NULL;	}    }    else unlex(lex_item);    if (!user_def_list && !address_def_list) {	syntax_error(fp, "Empty item not allowed", lex_item);	return NULL;    }    item = (Item*)calloc(1, sizeof(Item));    if (item == NULL)	outofmem(__FILE__, "parse_item");    item->user_def_list = user_def_list;    item->address_def_list = address_def_list;    return item;}