if (balance == 0 && c1.member((char) b[i1-1])) {
if (balance == 0 && c1.member(b[i1-1])) {
    public vDescriptor nextval() {	if (PC == 1) {	    for (int i = 0; i < arguments.length; i++) {		arguments[i] = arguments[i].deref();	    }	    c1 = vCset.argVal(arguments, 0, c1def);	    c2 = vCset.argVal(arguments, 1, c2def);	    c3 = vCset.argVal(arguments, 2, c3def);	    s = iRuntime.argSubject(arguments, 3);	    i1 = s.posEq(iRuntime.argPos(arguments, 4));	    i2 = s.posEq(vInteger.argVal(arguments, 5, 0));	    if (i1 == 0 || i2 == 0) {		return null;	    }	    if (i1 > i2) {		int tmp = i1;		i1 = i2;		i2 = tmp;	    }	    b = s.getBytes();	    PC = 2;	}	int balance = 0;	for (; i1 < i2; i1++) {	    if (balance == 0 && c1.member((char) b[i1-1])) {		i1 = i1+1;		return vInteger.New(i1-1);	    }	    if (c2.member(s.charAt(i1-1))) {		balance++;	    } else if (c3.member((char) b[i1-1])) {		balance--;		if (balance < 0) {		    return null;		}	    }	}	return null;    }