grammar is good.
My rationale for Not My Problem is that the default_engine does a similar cast (item * -> hash_item * -> char *), but I think it would be reasonable to do some checks and throw errors in an effort to avoid bugs.  So I'll do that