g2.setFont(new Font("monospaced", Font.PLAIN, Math.abs(getYPixPerUnitAsInt())));
		public void draw(Graphics g) {			Graphics2D g2 = (Graphics2D) g;			FontMetrics fm = g2.getFontMetrics();			int h = fm.getAscent();			Rectangle bounds = g.getClipBounds();			int top = ny;			int bottom = 0;			int left = 0;			int right = nx;			if(bounds != null) {				top = (int) Math.min(ny, ny - bounds.y / Math.abs(getYPixPerUnitAsInt()));				// top must <= ny				bottom = (int) Math.max(0, ny - 2 - (bounds.y + bounds.height) / Math.abs(getYPixPerUnitAsInt()) + 1);				// bottom must be >= 0				left = (int) Math.max(0, bounds.x / getXPixPerUnitAsInt());				right = (int) Math.min(nx, (bounds.x + bounds.width) / getXPixPerUnitAsInt() + 1);			}			for(int i = bottom; i < top; i++) {				String s = matrix.getRowName(i);				g2.drawString(s, 0, yToPixAsInt(i + 1) + h);				// fix height			}			if(bottomSelectedGeneIndex != -1) {				g2.setComposite(SRC_OVER_COMPOSITE);				g.setColor(Color.yellow);				g.fillRect(0, yToPixAsInt(topSelectedGeneIndex), getWidth(), yToPixAsInt(bottomSelectedGeneIndex) - yToPixAsInt(topSelectedGeneIndex));			}		}