char c = (char)s[i];
char c = (char) (s[i] & 0xFF);
vDescriptor function(vDescriptor[] args) {    byte[] s = vString.argDescr(args, 0).getBytes();    int stops[] = fTab.stops(args);    vByteBuffer b = new vByteBuffer(s.length);    int col = 1;    for (int i = 0; i < s.length; i++) {	char c = (char)s[i];	switch (c) {	    case '\b':				// backspace		b.append(c);		col--;		break;	    case '\n':				// newline or return	    case '\r':		b.append(c);		col = 1;		break;	    case '\t':				// tab		b.append(c);		col = fTab.nextTab(stops, col);		break;	    case ' ':				// one or more spaces		int nspaces = 1;		while (i + 1 < s.length && s[i+1] == ' ') {		    nspaces++;		    i++;		}		if (nspaces == 1) {		// lone space never becomes tab		    b.append(c);		    col++;		    break;		}		int nxtstop;		// following outer test avoids one-char tab followed by spaces		if (fTab.nextTab(stops, col + 1) <= col + nspaces) {		    while ((nxtstop = fTab.nextTab(stops,col)) <= col+nspaces){			b.append('\t');			nspaces -= (nxtstop - col);			col = nxtstop;		    }		}		while (nspaces-- > 0) {		    b.append(' ');		    col++;		}		break;	    default:				// other character		b.append(c);		if (c >= ' ' && c != '\177') {	// if not a control character		    col++;		}		break;	}    }    return b.mkString();}