docs: @Override
  	public T subimage(int x0, int y0, int x1, int y1, T subimage) {
  		T ret = createNew(-1, -1);
  		ret._setData(_getData());
  		ret.stride = Math.max(width * numBands, stride); // ok why is this done?!?!  Shouldn't it always be stride?
  		ret.width = x1 - x0;
  		ret.height = y1 - y0;
  		ret.numBands = numBands;
  		ret.startIndex = startIndex + y0 * stride + x0 * numBands;
  		ret.subImage = true;
  		ret.imageType = imageType;
  
  		return ret;
  	}