rem: Tcl_HashEntry *hPtr; Array *arrayPtr;
add: Tcl_HashEntry *hPtr = NULL; Array *arrayPtr = NULL;
context: NsTclNsvUnsetObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv){    Tcl_HashEntry *hPtr;    Array *arrayPtr;    if (objc != 2 && objc != 3) {    	Tcl_WrongNumArgs(interp, 1, objv, "array ?key?");	return TCL_ERROR;    }    arrayPtr = LockArray(arg, interp, objv[1], 0);    if (arrayPtr == NULL) {	return TCL_ERROR;    }    if (objc == 2) {    	Tcl_DeleteHashEntry(arrayPtr->entryPtr);    } else {    	hPtr = Tcl_FindHashEntry(&arrayPtr->vars, Tcl_GetString(objv[2]));	if (hPtr != NULL) {	    ns_free(Tcl_GetHashValue(hPtr));	    Tcl_DeleteHashEntry(hPtr);	}    }    UnlockArray(arrayPtr);    if (objc == 2) {	FlushArray(arrayPtr);	Tcl_DeleteHashTable(&arrayPtr->vars);	ns_free(arrayPtr);    } else if (hPtr == NULL) {	Tcl_AppendResult(interp, "no such key: ", Tcl_GetString(objv[2]), NULL);	return TCL_ERROR;    }    return TCL_OK;}