docs: public void drawText(Graphics2D g) {
  		// We don't want to corrupt the graphics environs with our
  		// affine transforms!
  		Graphics2D g2 = (Graphics2D) g.create();
  		g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  				RenderingHints.VALUE_ANTIALIAS_ON);
  		g2.transform(affineToText);
  
  		// What about the text label?
  		FontMetrics metrics = g2.getFontMetrics();
  		bounds = metrics.getStringBounds(getLabel(), g2);
  		// Will the label appear to be upside down?
  		boolean upsideDown = end.x < start.x;
  		float dx = (float) bounds.getWidth() / 2.0f;
  		float dy = (curvy < 0.0f) ^ upsideDown ? metrics.getAscent() : -metrics
  				.getDescent();
  		bounds.setRect(bounds.getX() - dx, bounds.getY() + dy, bounds
  				.getWidth(), bounds.getHeight());
  		for (int i = 0; i < label.length(); i += CHARS_PER_STEP) {
  			String sublabel = label.substring(i, Math.min(i + CHARS_PER_STEP,
  					label.length()));
  			g2.drawString(sublabel, -dx, dy);
  			dx -= metrics.getStringBounds(sublabel, g2).getWidth();
  		}
  		// g2.drawString(label, -dx, dy);
  		g2.dispose();
  		/*
  		 * if (GRAPHICS == null) { GRAPHICS = g.create(); METRICS =
  		 * GRAPHICS.getFontMetrics(); }
  		 */
  	}