draw(renderer, text, x = this.pos.x, y = this.pos.y) {
		// "hacky patch" for backward compatibilty
		if (typeof this.ancestor === "undefined") {
			// update position if changed
			if (this.pos.x !== x || this.pos.y !== y) {
				this.pos.x = x;
				this.pos.y = y;
				this.isDirty = true;
			}

			// update text cache
			this.setText(text);

			// save the previous context
			renderer.save();

			// apply the defined alpha value
			renderer.setGlobalAlpha(renderer.globalAlpha() * this.getOpacity());
		}

		// adjust x,y position based on the bounding box
		x = this.metrics.x;
		y = this.metrics.y;

		// clamp to pixel grid if required
		if (renderer.settings.subPixel === false) {
			x = ~~x;
			y = ~~y;
		}

		// draw the text
		renderer.drawImage(this.canvasTexture.canvas, x, y);

		// for backward compatibilty
		if (typeof this.ancestor === "undefined") {
			// restore previous context
			renderer.restore();
		}
	}
draw a text at the specified coord
@param {CanvasRenderer|WebGLRenderer} renderer - Reference to the destination renderer instance
@param {string} [text]
@param {number} [x]
@param {number} [y]