public function render(?string $url = null): void
	{
		// Get HTML element
		$el = $this->getElementPrototype();
		$el->size = $this->size;
		$el->annotation = $this->annotation;

		// Set given URL or filled url
		if ($url !== null) {
			Validators::assert($url, 'string|url');
			$el->href = $url;
		} else {
			$el->href = $this->url;
		}

		// Set width in INLINE mode
		if ($this->annotation === self::ANNOTATION_INLINE) {
			$el->width = $this->width;
		}

		// Set callback, if filled
		if ($this->callback !== null) {
			$el->callback = $this->callback;
		}

		// Set properties as data attributes
		foreach ($this->getProperties() as $key => $value) {
			if ($value !== null && !empty($value)) {
				$el->{'data-' . $key} = $value;
			}
		}

		echo $el;
	}