final int[] data = Grab(win, x, y, w, h);
final int[] data = Grab(win, limitBounds(win, x, y, w, h));
public static vDescriptor Pixel(vWindow win, int x, int y, int w, int h) {    final double gamma = win.gamma;    final int[] data = Grab(win, x, y, w, h);    if (data == null) {    	return null; /*FAIL*/    }    return new vClosure() {	int i = 0;	int previous = 0x08000000; 	// a value we won't ever see	public vDescriptor Resume() {	    if (i >= data.length) {		return null; /*FAIL*/	    }	    int rgb = data[i++];	    if (rgb != previous) {		int r = (rgb >> 16) & 0xFF;		int g = (rgb >>  8) & 0xFF;		int b = rgb & 0xFF;		r = (int) (65535 * Math.pow(r / 255.0, gamma));		g = (int) (65535 * Math.pow(g / 255.0, gamma));		b = (int) (65535 * Math.pow(b / 255.0, gamma));		retval = vString.New(r + "," + g + "," + b);	    }	    return this;	};     }.Resume();}