if ((flag & 1) != 0) {
if ((n & 1) != 0) {
vValue Sort(vDescriptor n) {    long flag = n.mkInteger().value;    vTableElem a[] = new vTableElem[t.size()];	// make array of key/val pairs    int i = 0;    for (Enumeration e = t.keys(); e.hasMoreElements(); ) {        vValue key = (vValue)e.nextElement();	vValue val = (vValue)t.get(key);	if ((flag & 1) != 0) {	    a[i++] = new vTableElem(key, val);	// sort by key	} else {	    a[i++] = new vTableElem(val, key);	// sort by value	}    }    iUtil.sort(a);				// sort array of pairs    vValue b[];    if (flag <= 2) {				// return list of lists	b = new vValue[t.size()];    	vValue pair[] = new vValue[2];	for (i = 0; i < t.size(); i++) {	    if ((flag & 1) != 0) {		// sorted by key		pair[0] = a[i].sortkey;		pair[1] = a[i].other;	    } else {				// sorted by value		pair[0] = a[i].other;		pair[1] = a[i].sortkey;	    }	    b[i] = iNew.List(pair);	}    } else { 					// return 2x-long list    	b = new vValue[2 * t.size()];	int j = 0;	for (i = 0; i < t.size(); i++) {	    if ((flag & 1) != 0) {		// sorted by key	    	b[j++] = a[i].sortkey;	    	b[j++] = a[i].other;	    } else {				// sorted by value	    	b[j++] = a[i].other;	    	b[j++] = a[i].sortkey;	    }    	}    }    return iNew.List(b);			// turn results into Icon list}