rem: } opt;
add: } _nsmayalias opt;
context: NsTclNsvArrayObjCmd(ClientData arg, Tcl_Interp *interp, int objc, Tcl_Obj **objv){    Array *arrayPtr;    Tcl_HashEntry *hPtr;    Tcl_HashSearch search;    char *pattern, *key;    int i, lobjc, size;    Tcl_Obj *result, **lobjv;    static CONST char *opts[] = {	"set", "reset", "get", "names", "size", "exists", NULL    };    enum {	CSetIdx, CResetIdx, CGetIdx, CNamesIdx, CSizeIdx, CExistsIdx    } opt;    if (objc < 2) {    	Tcl_WrongNumArgs(interp, 1, objv, "option ...");	return TCL_ERROR;    }    if (Tcl_GetIndexFromObj(interp, objv[1], opts, "option", 0,			    (int *) &opt) != TCL_OK) {	return TCL_ERROR;    }    result = Tcl_GetObjResult(interp);    switch (opt) {    case CSetIdx:    case CResetIdx:	if (objc != 4) {	    Tcl_WrongNumArgs(interp, 2, objv, "array valueList");	    return TCL_ERROR;	}	if (Tcl_ListObjGetElements(interp, objv[3], &lobjc,	    	    	    	   &lobjv) != TCL_OK) {	    return TCL_ERROR;    	}    	if (lobjc & 1) {	    Tcl_AppendResult(interp, "invalid list: ",		    	     Tcl_GetString(objv[3]), NULL);	    return TCL_ERROR;	}    	arrayPtr = LockArray(arg, interp, objv[2], 1);	if (opt == CResetIdx) {	    FlushArray(arrayPtr);	}    	for (i = 0; i < lobjc; i += 2) {	    SetVar(arrayPtr, lobjv[i], lobjv[i+1]);	}	UnlockArray(arrayPtr);	break;    case CSizeIdx:    case CExistsIdx:	if (objc != 3) {	    Tcl_WrongNumArgs(interp, 2, objv, "array");	    return TCL_ERROR;	}	arrayPtr = LockArray(arg, NULL, objv[2], 0);	if (arrayPtr == NULL) {	    size = 0;	} else {	    size = (opt == CSizeIdx) ? arrayPtr->vars.numEntries : 1;	    UnlockArray(arrayPtr);	}	if (opt == CExistsIdx) {	    Tcl_SetBooleanObj(result, size);	} else {	    Tcl_SetIntObj(result, size);	}	break;    case CGetIdx:    case CNamesIdx:	if (objc != 3 && objc != 4) {	    Tcl_WrongNumArgs(interp, 2, objv, "array ?pattern?");	    return TCL_ERROR;	}	arrayPtr = LockArray(arg, NULL, objv[2], 0);	if (arrayPtr != NULL) {	    pattern = (objc > 3) ? Tcl_GetString(objv[3]) : NULL;	    hPtr = Tcl_FirstHashEntry(&arrayPtr->vars, &search);	    while (hPtr != NULL) {	        key = Tcl_GetHashKey(&arrayPtr->vars, hPtr);	        if (pattern == NULL || Tcl_StringMatch(key, pattern)) {		    Tcl_AppendElement(interp, key);	    	    if (opt == CGetIdx) {		        Tcl_AppendElement(interp, Tcl_GetHashValue(hPtr));		    }		}	    	hPtr = Tcl_NextHashEntry(&search);	    }	    UnlockArray(arrayPtr);	}	break;    }    return TCL_OK;}