How could `exp->type` be rewritten?  Is there any way this can happen that is not a bug?