static SV *new_constsub(pTHX_ constants_lookup lookup,
static void new_constsub(pTHX_ constants_lookup lookup,
static SV *new_constsub(pTHX_ constants_lookup lookup,                        HV *caller_stash, HV *stash,                        const char *name){    int name_len = strlen(name);    GV **gvp = (GV **)hv_fetch(stash, name, name_len, TRUE);    SV *val;    /* dont redefine */    if (!isGV(*gvp) || !GvCV(*gvp)) {        val = (*lookup)(aTHX_ name);#if 0        fprintf(stderr, "newCONSTSUB(%s, %s, %d)\n",                HvNAME(stash), name, val);#endif        newCONSTSUB(stash, (char *)name, val);#ifdef GvSHARED        GvSHARED_on(*gvp);#endif    }        /* export into callers namespace */    if (caller_stash) {        GV *alias = *(GV **)hv_fetch(caller_stash,                                     (char *)name, name_len, TRUE);        if (!isGV(alias)) {            gv_init(alias, caller_stash, name, name_len, TRUE);        }        GvCV(alias) = GvCV(*gvp);    }    return val;}