docs: public void generate( long value , int gridWidth ) {
  		renderer.init();
  
  		drawBorder();
  
  		double whiteBorder = whiteBorderDoc /markerWidth;
  		double X0 = whiteBorder+blackBorder;
  		double Y0 = whiteBorder+blackBorder;
  
  		double bw = (1.0-2*X0)/gridWidth;
  
  		// Draw the black corner used to ID the orientation
  		square(X0,1.0-whiteBorder-blackBorder-bw,bw);
  
  		final int bitCount = gridWidth*gridWidth - 4;
  		for (int j = 0; j < bitCount; j++) {
  			if( (value & (1L<<j)) != 0 ) {
  				box(bw,j,gridWidth);
  			}
  		}
  
  		//		int s2 = (int)Math.round(ret.width*borderFraction);
  //		int s5 = s2+square*(gridWidth-1);
  //
  //		int N = gridWidth*gridWidth-4;
  //		for (int i = 0; i < N; i++) {
  //			if( (value& (1<<i)) != 0 )
  //				continue;
  //
  //			int where = index(i, gridWidth);
  //			int x = where%gridWidth;
  //			int y = gridWidth-1-(where/gridWidth);
  //
  //			x = s2 + square*x;
  //			y = s2 + square*y;
  //
  //			ImageMiscOps.fillRectangle(ret,0xFF,x,y,square,square);
  //		}
  //		ImageMiscOps.fillRectangle(ret,0xFF,s2,s2,square,square);
  //		ImageMiscOps.fillRectangle(ret,0xFF,s5,s5,square,square);
  //		ImageMiscOps.fillRectangle(ret,0xFF,s5,s2,square,square);
  	}