return v;
if (v == null) { return null; } else { retval = v; return this; }
    public vDescriptor Call(vDescriptor[] args) {	final vWindow win = vWindow.winArg(args);	int b = vWindow.argBase(args);	for (int i = b; i < args.length; i++) {	    args[i] = args[i].Deref();	}	final wAttrib alist[] = wAttrib.parseAtts(args, b);	for (int i = 0; i < alist.length; i++) {	    wAttrib a = alist[i];	    if (a.val != null) {		// if name=val argument		if (a.set(win) == null) {		    alist[i] = null;		// set failed		}	    }	}	return new vClosure() {	    int next = 0;	    public vDescriptor Resume() {		vDescriptor v = null;		while (next < alist.length) {		    wAttrib a = alist[next++];		    if (a != null) {			v = a.get(win);			if (v != null) {			    break;			// generate value			}		    }		}		return v;	    }	}.Resume();    }