add: NsTclInitKeylistType();
context: InitInterp(Tcl_Interp *interp, NsServer *servPtr, NsInterp **itPtrPtr){    static volatile int initialized = 0;    NsInterp *itPtr;    int result = TCL_OK;    /*     * Optionally single-thread Tcl interp initialization.     */    if (nsconf.tcl.lockoninit) {	Ns_CsEnter(&initcs);    }    /*     * Basic Tcl initialization.     */    result = Tcl_Init(interp);    Tcl_InitMemory(interp);    /*     * Core one-time AOLserver initialization.     */    if (!initialized) {	Ns_MasterLock();	if (!initialized) {	    NsTclInitQueueType();	    NsTclInitAddrType();	    NsTclInitTimeType();	    initialized = 1;	}	Ns_MasterUnlock();    }    itPtr = ns_calloc(1, sizeof(NsInterp));    itPtr->interp = interp;    itPtr->servPtr = servPtr;    Tcl_InitHashTable(&itPtr->sets, TCL_STRING_KEYS);    Tcl_InitHashTable(&itPtr->chans, TCL_STRING_KEYS);	    Tcl_InitHashTable(&itPtr->https, TCL_STRING_KEYS);	    Tcl_SetAssocData(interp, "ns:data", FreeData, itPtr);    NsTclAddCmds(interp, itPtr);    RunTraces(itPtr, NS_TCL_TRACE_CREATE);    /*     * Virtual-server initialization including invoking any create traces     * typically registered by module calls to Ns_TclInitInterps and     * a call to UpdateServerInterp to copy procs and namespaces.     */    if (servPtr != NULL) {	NsTclAddServerCmds(interp, itPtr);        result = UpdateServerInterp(itPtr);    }    if (nsconf.tcl.lockoninit) {        Ns_CsLeave(&initcs);     }    if (result != TCL_OK) {	Ns_TclLogError(interp);    }    if (itPtrPtr != NULL) {	*itPtrPtr = itPtr;    }    return result;}